Seek() public abstract méthode

public abstract Seek ( long offset, SeekOrigin origin ) : long
offset long
origin SeekOrigin
Résultat long
        public void Save(Stream output)
        {
            BinaryWriter writer = new BinaryWriter(output);

            writer.Write(this.version);
            writer.Write((int)0);
            writer.Write((int)0);

            // Double the string length since it's UTF16
            writer.Write((byte)(this.partName.Length * 2));
            MadScience.StreamHelpers.WriteStringUTF16(output, false, this.partName);

            writer.Write(this.blendType);
            this.blendTgi.Save(output);

            writer.Write((uint)this.geomBoneEntries.Count);
            for (int i = 0; i < this.geomBoneEntries.Count; i++)
            {
                this.geomBoneEntries[i].Save(output);
            }

            uint tgiOffset = (uint)output.Position - 8;
            // Why is this +12?  I dunno. :)
            this.keytable.size = 8;
            this.keytable.Save(output);
            output.Seek(4, SeekOrigin.Begin);
            writer.Write(tgiOffset);
            writer.Write(this.keytable.size);

            writer = null;
        }
Exemple #2
0
		public bool Read(Id3Tag tag, Stream mp3Stream)
		{
			//Check wether the file contains an Id3v1 tag--------------------------------
			mp3Stream.Seek( -128 , SeekOrigin.End);
			
			byte[] b = new byte[3];
			mp3Stream.Read( b, 0, 3 );
			mp3Stream.Seek(0, SeekOrigin.Begin);
			string tagS = Encoding.ASCII.GetString(b);
			if(tagS != "TAG")
				return false;
			
			mp3Stream.Seek( - 128 + 3, SeekOrigin.End );
			//Parse the tag -)------------------------------------------------
			tag.AddTitle(Read(mp3Stream, 30));
			tag.AddArtist(Read(mp3Stream, 30));
			tag.AddAlbum(Read(mp3Stream, 30));
			//------------------------------------------------
			tag.AddYear(Read(mp3Stream, 4));
			tag.AddComment(Read(mp3Stream, 30));

			//string trackNumber;
			mp3Stream.Seek(- 2, SeekOrigin.Current);
			b = new byte[2];
			mp3Stream.Read(b, 0, 2);
			
			if (b[0] == 0)
				tag.AddTrack(b[1].ToString());

			byte genreByte = (byte) mp3Stream.ReadByte();
			mp3Stream.Seek(0, SeekOrigin.Begin);
			tag.AddGenre(TagGenres.Get(genreByte));

			return true;
		}
        /// <summary>
        ///     Reads a generic Pokémon container from a Stream.
        ///     Those containers are the ones that starts with "GR", "MM", "AD" and so on...
        /// </summary>
        /// <param name="data">Stream with container data</param>
        /// <returns></returns>
        public static OContainer load(Stream data)
        {
            BinaryReader input = new BinaryReader(data);
            OContainer output = new OContainer();

            IOUtils.readString(input, 0, 2); //Magic
            ushort sectionCount = input.ReadUInt16();
            for (int i = 0; i < sectionCount; i++)
            {
                OContainer.fileEntry entry = new OContainer.fileEntry();

                data.Seek(4 + (i * 4), SeekOrigin.Begin);
                uint startOffset = input.ReadUInt32();
                uint endOffset = input.ReadUInt32();
                uint length = endOffset - startOffset;

                data.Seek(startOffset, SeekOrigin.Begin);
                byte[] buffer = new byte[length];
                input.Read(buffer, 0, (int)length);
                entry.data = buffer;

                output.content.Add(entry);
            }

            data.Close();

            return output;
        }
Exemple #4
0
        public HvaReader(Stream s)
        {
            // Index swaps for transposing a matrix
            var ids = new byte[] { 0, 4, 8, 12, 1, 5, 9, 13, 2, 6, 10, 14 };

            s.Seek(16, SeekOrigin.Begin);
            FrameCount = s.ReadUInt32();
            LimbCount = s.ReadUInt32();

            // Skip limb names
            s.Seek(16 * LimbCount, SeekOrigin.Current);
            Transforms = new float[16 * FrameCount * LimbCount];
            for (var j = 0; j < FrameCount; j++)
                for (var i = 0; i < LimbCount; i++)
                {
                    // Convert to column-major matrices and add the final matrix row
                    var c = 16 * (LimbCount * j + i);
                    Transforms[c + 3] = 0;
                    Transforms[c + 7] = 0;
                    Transforms[c + 11] = 0;
                    Transforms[c + 15] = 1;

                    for (var k = 0; k < 12; k++)
                        Transforms[c + ids[k]] = s.ReadFloat();
                }
        }
Exemple #5
0
		public void Write(Tag tag, Stream apeStream, Stream tempStream) {
			ByteBuffer tagBuffer = tc.Create(tag);

			if (!TagExists(apeStream)) {
				apeStream.Seek(0, SeekOrigin.End);
				apeStream.Write(tagBuffer.Data, 0, tagBuffer.Capacity);
			} else {
				apeStream.Seek( -32 + 8 , SeekOrigin.End);
			
				//Version
				byte[] b = new byte[4];
				apeStream.Read( b , 0,  b.Length);
				int version = Utils.GetNumber(b, 0, 3);
				if(version != 2000) {
					throw new CannotWriteException("APE Tag other than version 2.0 are not supported");
				}
				
				//Size
				b = new byte[4];
				apeStream.Read( b , 0,  b.Length);
				long oldSize = Utils.GetLongNumber(b, 0, 3) + 32;
				int tagSize = tagBuffer.Capacity;
				
				apeStream.Seek(-oldSize, SeekOrigin.End);
				apeStream.Write(tagBuffer.Data, 0, tagBuffer.Capacity);
					
				if(oldSize > tagSize) {
					//Truncate the file
					apeStream.SetLength(apeStream.Length - (oldSize-tagSize));
				}
			}
		}
Exemple #6
0
		public static int WriteSparse(Stream f,byte[] buf ,int len)
		{
			int l1=0, l2=0;
			int ret;

			for (l1 = 0; l1 < len && buf[l1] == 0; l1++) {}
			for (l2 = 0; l2 < len-l1 && buf[len-(l2+1)] == 0; l2++) {}

			lastByte = buf[len-1];

			if (l1 == len || l2 > 0)
				lastSparse=1;

			if (l1 > 0) 
				f.Seek(l1, SeekOrigin.Current);


			if (l1 == len)
				return len;

			f.Write(buf, l1, len - (l1+l2));			
			ret = len - (l1+l2);
			if (ret == -1 || ret == 0)
				return ret;
			else if (ret != (len - (l1+l2)))
				return (l1+ret);

			if (l2 > 0)
				f.Seek(l2, SeekOrigin.Current);

			return len;
		} 
        /// <summary>
        ///     Reads a DARC archive.
        /// </summary>
        /// <param name="data">Stream of the data</param>
        /// <returns>The container data</returns>
        public static OContainer load(Stream data)
        {
            OContainer output = new OContainer();
            BinaryReader input = new BinaryReader(data);

            string darcMagic = IOUtils.readStringWithLength(input, 4);
            ushort endian = input.ReadUInt16();
            ushort headerLength = input.ReadUInt16();
            uint version = input.ReadUInt32();
            uint fileSize = input.ReadUInt32();
            uint tableOffset = input.ReadUInt32();
            uint tableLength = input.ReadUInt32();
            uint dataOffset = input.ReadUInt32();

            data.Seek(tableOffset, SeekOrigin.Begin);
            fileEntry root = getEntry(input);
            int baseOffset = (int)data.Position;
            int namesOffset = (int)(tableOffset + root.length * 0xc);

            string currDir = null;
            for (int i = 0; i < root.length - 1; i++)
            {
                data.Seek(baseOffset + i * 0xc, SeekOrigin.Begin);

                fileEntry entry = getEntry(input);

                if ((entry.flags & 1) > 0)
                {
                    //Folder
                    int index = i;
                    currDir = null;
                    for (;;)
                    {
                        uint parentIndex = entry.offset;
                        currDir = getName(input, entry.nameOffset + namesOffset) + "/" + currDir;
                        if (parentIndex == 0 || parentIndex == index) break;
                        data.Seek(baseOffset + parentIndex * 0xc, SeekOrigin.Begin);
                        entry = getEntry(input);
                        index = (int)parentIndex;
                    }

                    continue;
                }

                data.Seek(entry.offset, SeekOrigin.Begin);
                byte[] buffer = new byte[entry.length];
                data.Read(buffer, 0, buffer.Length);

                OContainer.fileEntry file = new OContainer.fileEntry();
                file.name = currDir + getName(input, entry.nameOffset + namesOffset);
                file.data = buffer;

                output.content.Add(file);
            }

            data.Close();
            return output;
        }
Exemple #8
0
        public bool Open(Stream fs)
        {
            var intBytes = new byte[4];
            Header = MarshalUtil.ReadStruct<CIAHeader>(fs); //read header

            CertificateChainOffset = Marshal.SizeOf(Header) + (long)Header.PaddingLength;
            TicketOffset = CertificateChainOffset + Header.CertificateChainLength;
            if (TicketOffset % 64 != 0)
                TicketOffset += (64 - TicketOffset % 64);
            TMDOffset = TicketOffset + Header.TicketLength;
            if (TMDOffset % 64 != 0)
                TMDOffset += (64 - TMDOffset % 64);
            ContentOffset = TMDOffset + Header.TMDLength; ;
            if (ContentOffset % 64 != 0)
                ContentOffset += (64 - ContentOffset % 64);
            MetaOffset = ContentOffset + (long)Header.ContentLength;
            if (MetaOffset % 64 != 0)
                MetaOffset += (64 - MetaOffset % 64);

            fs.Seek(TicketOffset, SeekOrigin.Begin);
            TicketContext = new TicketContext();
            if (!TicketContext.Open(fs))
            {
                errorMessage = TicketContext.GetErrorMessage();
                return false;
            }
            fs.Seek(CertificateChainOffset, SeekOrigin.Begin);
            CertificatesContext = new CertificatesContext();
            if (!CertificatesContext.Open(fs))
            {
                errorMessage = CertificatesContext.GetErrorMessage();
                return false;
            }
            fs.Seek(TMDOffset, SeekOrigin.Begin);
            TMDContext = new TMDContext();
            if (!TMDContext.Open(fs))
            {
                errorMessage = TMDContext.GetErrorMessage();
                return false;
            }

            if (Header.MetaLength > 0)
            {
                fs.Seek(MetaOffset, SeekOrigin.Begin);
                MetaHeaderEntries = new ArrayList();
                var metaHeaderEntry = MarshalUtil.ReadStruct<CIAMetaHeaderEntry>(fs);
                while (metaHeaderEntry.Type != 0)
                {
                    MetaHeaderEntries.Add(metaHeaderEntry);
                    metaHeaderEntry = MarshalUtil.ReadStruct<CIAMetaHeaderEntry>(fs);
                }
                fs.Seek(MetaOffset + 0x400, SeekOrigin.Begin); //Jump to the header
                ICN = new ICNContext();
                ICN.Open(fs);
            }
            return true;
        }
Exemple #9
0
 public bool Open(Stream fs)
 {
     StartOffset = fs.Position;
     Header = MarshalUtil.ReadStruct<ICNHeader>(fs); //read header
     fs.Seek(StartOffset + 0x2000, SeekOrigin.Begin); //Jump to the icons
     fs.Seek(0x40, SeekOrigin.Current); //skip header
     SmallIcon = ImageUtil.ReadImageFromStream(fs, 24, 24, ImageUtil.PixelFormat.RGB565);
     LargeIcon = ImageUtil.ReadImageFromStream(fs, 48, 48, ImageUtil.PixelFormat.RGB565);
     return true;
 }
        /// <summary>
        /// 値をバイト配列として読み取ります。
        /// </summary>
        /// <param name="src">値を読み取るストリーム。</param>
        /// <returns>値となるバイト配列。</returns>
        public byte[] Read( Stream src )
        {
            var position = src.Position;
            src.Seek( this.Position, SeekOrigin.Begin );

            var value = src.ReadBytes( this.Length );
            src.Seek( position, SeekOrigin.Begin );

            return value;
        }
        /// <summary>
        ///     Loads a Fantasy Life ZTEX texture from a Stream.
        /// </summary>
        /// <param name="data">The Stream with the data</param>
        /// <returns>The list of textures</returns>
        public static List<RenderBase.OTexture> load(Stream data)
        {
            List<RenderBase.OTexture> textures = new List<RenderBase.OTexture>();

            BinaryReader input = new BinaryReader(data);

            string ztexMagic = IOUtils.readString(input, 0, 4);
            ushort textureCount = input.ReadUInt16();
            input.ReadUInt16();
            input.ReadUInt32();

            List<textureEntry> entries = new List<textureEntry>();
            for (int i = 0; i < textureCount; i++)
            {
                textureEntry entry = new textureEntry();

                entry.name = IOUtils.readString(input, (uint)(0xc + (i * 0x58)));
                data.Seek(0xc + (i * 0x58) + 0x40, SeekOrigin.Begin);

                input.ReadUInt32();
                entry.offset = input.ReadUInt32();
                input.ReadUInt32();
                entry.length = input.ReadUInt32();
                entry.width = input.ReadUInt16();
                entry.height = input.ReadUInt16();
                input.ReadByte();
                entry.format = input.ReadByte();
                input.ReadUInt16();

                entries.Add(entry);
            }

            foreach (textureEntry entry in entries)
            {
                data.Seek(entry.offset, SeekOrigin.Begin);
                byte[] buffer = new byte[entry.length];
                data.Read(buffer, 0, buffer.Length);

                Bitmap bmp = null;
                switch (entry.format)
                {
                    case 1: bmp = TextureCodec.decode(buffer, entry.width, entry.height, RenderBase.OTextureFormat.rgb565); break;
                    case 5: bmp = TextureCodec.decode(buffer, entry.width, entry.height, RenderBase.OTextureFormat.rgba4); break;
                    case 9: bmp = TextureCodec.decode(buffer, entry.width, entry.height, RenderBase.OTextureFormat.rgba8); break;
                    case 0x18: bmp = TextureCodec.decode(buffer, entry.width, entry.height, RenderBase.OTextureFormat.etc1); break;
                    case 0x19: bmp = TextureCodec.decode(buffer, entry.width, entry.height, RenderBase.OTextureFormat.etc1a4); break;
                }

                textures.Add(new RenderBase.OTexture(bmp, entry.name));
            }

            data.Close();

            return textures;
        }
        public EncodingInfo Read( Stream raf )
        {
            EncodingInfo info = new EncodingInfo();

            //Begin info fetch-------------------------------------------
            if ( raf.Length == 0 ) {
                //Empty File
                throw new CannotReadException("File is empty");
            }
            raf.Seek( 0 , SeekOrigin.Begin);

            //MP+ Header string
            byte[] b = new byte[4];
            raf.Read(b, 0, b.Length);
            string mpc = new string(System.Text.Encoding.ASCII.GetChars(b));
            if (mpc != "MAC ") {
                throw new CannotReadException("'MAC ' Header not found");
            }

            b = new byte[4];
            raf.Read(b, 0, b.Length);
            int version = Utils.GetNumber(b, 0,3);
            if(version < 3970)
                throw new CannotReadException("Monkey Audio version <= 3.97 is not supported");

            b = new byte[44];
            raf.Read(b, 0, b.Length);
            MonkeyDescriptor md = new MonkeyDescriptor(b);

            b = new byte[24];
            raf.Read(b, 0, b.Length);
            MonkeyHeader mh = new MonkeyHeader(b);

            raf.Seek(md.RiffWavOffset, SeekOrigin.Begin);
            b = new byte[12];
            raf.Read(b, 0, b.Length);
            WavRIFFHeader wrh = new WavRIFFHeader(b);
            if(!wrh.Valid)
                throw new CannotReadException("No valid RIFF Header found");

            b = new byte[24];
            raf.Read(b, 0, b.Length);
            WavFormatHeader wfh = new WavFormatHeader(b);
            if(!wfh.Valid)
                throw new CannotReadException("No valid WAV Header found");

            info.Length = mh.Length;
            info.ChannelNumber = wfh.ChannelNumber ;
            info.SamplingRate = wfh.SamplingRate ;
            info.Bitrate = ComputeBitrate(info.Length, raf.Length) ;
            info.EncodingType = "Monkey Audio v" + (((double)version)/1000)+", compression level "+mh.CompressionLevel;
            info.ExtraEncodingInfos = "";

            return info;
        }
        public Id3v2Tag Read(Stream mp3Stream)
        {
            Id3v2Tag tag;

            byte[] b = new byte[3];

            mp3Stream.Read(b, 0, b.Length);
            mp3Stream.Seek(0, SeekOrigin.Begin);

            string ID3 = new string(System.Text.Encoding.ASCII.GetChars(b));

            if (ID3 != "ID3") {
                throw new CannotReadException("Not an ID3 tag");
            }
            //Begins tag parsing ---------------------------------------------
            mp3Stream.Seek(3, SeekOrigin.Begin);
            //----------------------------------------------------------------------------
            //Version du tag ID3v2.xx.xx
            string versionHigh=mp3Stream.ReadByte() +"";
            string versionID3 =versionHigh+ "." + mp3Stream.ReadByte();
            //------------------------------------------------------------------------- ---
            //D?tection de certains flags (A COMPLETER)
            this.ID3Flags = ProcessID3Flags( (byte) mp3Stream.ReadByte() );
            //----------------------------------------------------------------------------

            //			On extrait la taille du tag ID3
            int tagSize = ReadSyncsafeInteger(mp3Stream);
            //System.err.println("TagSize: "+tagSize);

            //			------------------NEWNEWNWENENEWNENWEWN-------------------------------
            //Fill a byte buffer, then process according to correct version
            b = new byte[tagSize+2];
            mp3Stream.Read(b, 0, b.Length);
            ByteBuffer bb = new ByteBuffer(b);

            if (ID3Flags[0]==true) {
                //We have unsynchronization, first re-synchronize
                bb = synchronizer.synchronize(bb);
            }

            if(versionHigh == "2") {
                tag = v23.Read(bb, ID3Flags, Id3v2Tag.ID3V22);
            }
            else if(versionHigh == "3") {
                tag = v23.Read(bb, ID3Flags, Id3v2Tag.ID3V23);
            }
            else if(versionHigh == "4") {
                throw new CannotReadException("ID3v2 tag version "+ versionID3 + " not supported !");
            }
            else {
                throw new CannotReadException("ID3v2 tag version "+ versionID3 + " not supported !");
            }

            return tag;
        }
Exemple #14
0
        public bool IsResourceEncrypted(Stream resourceStream)
        {
            long currentPosition = resourceStream.Position;
            resourceStream.Seek(0, SeekOrigin.Begin);

            var buffer = new byte[EncryptionSize];
            resourceStream.Read(buffer, 0, EncryptionSize);
            resourceStream.Seek(currentPosition, SeekOrigin.Begin);

            return (buffer[0] == EncryptionFlag && buffer[1] == EncryptionFlag);
        }
        public EncodingInfo Read( Stream raf )
        {
            EncodingInfo info = new EncodingInfo();

            //Begin info fetch-------------------------------------------
            if ( raf.Length==0 ) {
                //Empty File
                throw new CannotReadException("File is empty");
            }
            raf.Seek( 0 , SeekOrigin.Begin);

            //MP+ Header string
            byte[] b = new byte[3];
            raf.Read(b, 0, b.Length);
            string mpc = new string(System.Text.Encoding.ASCII.GetChars(b));
            if (mpc != "MP+" && mpc == "ID3") {
                //TODO Do we have to do this ??
                //we have an ID3v2 tag at the beginning
                //We quickly jump to MPC data
                raf.Seek(6, SeekOrigin.Begin);
                int tagSize = ReadSyncsafeInteger(raf);
                raf.Seek(tagSize+10, SeekOrigin.Begin);

                //retry to read MPC stream
                b = new byte[3];
                raf.Read(b, 0, b.Length);
                mpc = new string(System.Text.Encoding.ASCII.GetChars(b));
                if (mpc != "MP+") {
                    //We could definitely not go there
                    throw new CannotReadException("MP+ Header not found");
                }
            } else if (mpc != "MP+"){
                throw new CannotReadException("MP+ Header not found");
            }

            b = new byte[25];
            raf.Read(b, 0, b.Length);
            MpcHeader mpcH = new MpcHeader(b);
            //We only support v7 Stream format, so if it isn't v7, then returned values
            //will be bogus, and the file will be ignored

            double pcm = mpcH.SamplesNumber;
            info.Length = (int) ( pcm * 1152 / mpcH.SamplingRate );
            info.ChannelNumber = mpcH.ChannelNumber;
            info.SamplingRate = mpcH.SamplingRate;
            info.EncodingType = mpcH.EncodingType;
            info.ExtraEncodingInfos = mpcH.EncoderInfo;
            info.Bitrate = ComputeBitrate( info.Length, raf.Length );

            return info;
        }
        public EncodingInfo Read(Stream raf)
        {
            //Read the infos--------------------------------------------------------
            if (raf.Length == 0) {
                //Empty File
                throw new CannotReadException("Error: File empty");
            }
            raf.Seek(0, SeekOrigin.Begin);

            //FLAC Header string
            byte[] b = new byte[4];
            raf.Read(b, 0, b.Length);
            string flac = new string(System.Text.Encoding.ASCII.GetChars(b));
            if (flac != "fLaC") {
                throw new CannotReadException("fLaC Header not found");
            }

            MetadataBlockDataStreamInfo mbdsi = null;
            bool isLastBlock = false;
            while (!isLastBlock) {
                b = new byte[4];
                raf.Read(b, 0, b.Length);
                MetadataBlockHeader mbh = new MetadataBlockHeader(b);

                if (mbh.BlockType == (int) MetadataBlockHeader.BlockTypes.StreamInfo) {
                    b = new byte[mbh.DataLength];
                    raf.Read(b, 0, b.Length);

                    mbdsi = new MetadataBlockDataStreamInfo(b);
                    if (!mbdsi.Valid) {
                        throw new CannotReadException("FLAC StreamInfo not valid");
                    }
                    break;
                }
                raf.Seek(raf.Position + mbh.DataLength, SeekOrigin.Begin);

                isLastBlock = mbh.IsLastBlock;
                mbh = null; //Free memory
            }

            EncodingInfo info = new EncodingInfo();
            info.Length = mbdsi.Length;
            info.ChannelNumber = mbdsi.ChannelNumber;
            info.SamplingRate = mbdsi.SamplingRate;
            info.EncodingType = mbdsi.EncodingType;
            info.ExtraEncodingInfos = "";
            info.Bitrate = ComputeBitrate(mbdsi.Length, raf.Length);

            return info;
        }
        public Id3v1Tag Read( Stream mp3Stream )
        {
            Id3v1Tag tag = new Id3v1Tag();
            //Check wether the file contains an Id3v1 tag--------------------------------
            mp3Stream.Seek( -128 , SeekOrigin.End);

            byte[] b = new byte[3];
            mp3Stream.Read( b, 0, 3 );
            mp3Stream.Seek(0, SeekOrigin.Begin);
            string tagS = new string(System.Text.Encoding.ASCII.GetChars( b ));
            if(tagS != "TAG"){
                throw new CannotReadException("There is no Id3v1 Tag in this file");
            }

            mp3Stream.Seek( - 128 + 3, SeekOrigin.End );
            //Parse the tag -)------------------------------------------------
            string songName = Read(mp3Stream, 30);
            //------------------------------------------------
            string artist = Read(mp3Stream, 30);
            //------------------------------------------------
            string album = Read(mp3Stream, 30);
            //------------------------------------------------
            string year = Read(mp3Stream, 4);
            //------------------------------------------------
            string comment = Read(mp3Stream, 30);
            //------------------------------------------------
            string trackNumber = "";

            mp3Stream.Seek(- 2, SeekOrigin.Current);
            b = new byte[2];
            mp3Stream.Read(b, 0, 2);

            if ( b[0] == 0 ) {
                trackNumber = b[1].ToString ();
            }
            //------------------------------------------------
            byte genreByte = (byte) mp3Stream.ReadByte();
            mp3Stream.Seek(0, SeekOrigin.Begin);

            tag.SetTitle( songName );
            tag.SetArtist( artist );
            tag.SetAlbum( album );
            tag.SetYear( year );
            tag.SetComment( comment );
            tag.SetTrack( trackNumber );
            tag.SetGenre( tag.TranslateGenre(genreByte) );

            return tag;
        }
 public override object Deserialize(Stream inputStream)
 {
     var sr = new StreamReader(inputStream);
     inputStream.Seek(0, SeekOrigin.Begin);
     var serialized = sr.ReadToEnd();
     return _serializer.Deserialize(serialized, _primaryType);
 }
        /// <summary>
        /// Reads stream to match it against a dictionary of all known units for an ingredient
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="matchdata"></param>
        /// <returns></returns>
        public bool Read(Stream stream, MatchData matchdata)
        {
            if (data == null)
            {
                data = new NumericVocab();
            }

            var matchFound = false;
            var buffer = string.Empty;
            var matchPos = stream.Position;
            int curByte;

            while ((curByte = stream.ReadByte()) >= 0)
            {
                buffer += (char)curByte;
                NumericNode node;
                var match = data.Parse(buffer, out node);
                if (match == MatchPrecision.None)
                {
                    stream.Seek(matchPos, SeekOrigin.Begin);
                    break;
                }

                if (match == MatchPrecision.Exact)
                {
                    matchPos = stream.Position;
                    matchFound = true;
                    matchdata.Amount = new Amount { SizeHigh = node.Value };
                }
            }

            return matchFound;
        }
 public override object Deserialize(Stream inputStream)
 {
     inputStream.Seek(0, SeekOrigin.Begin);
         return JSON.Deserialize(new StreamReader(inputStream), _primaryType,
             new Options(
                 unspecifiedDateTimeKindBehavior: UnspecifiedDateTimeKindBehavior.IsUTC));
 }
Exemple #21
0
        public WebImage(Stream imageStream) {
            if (imageStream.CanSeek) {
                imageStream.Seek(0, SeekOrigin.Begin);

                _content = new byte[imageStream.Length];
                using (BinaryReader reader = new BinaryReader(imageStream)) {
                    reader.Read(_content, 0, (int)imageStream.Length);
                }
            }
            else {
                List<byte[]> chunks = new List<byte[]>();
                int totalSize = 0;
                using (BinaryReader reader = new BinaryReader(imageStream)) {
                    // Pick some size for chunks that is still under limit
                    // that causes them to be placed on the large object heap.
                    int chunkSizeInBytes = 1024 * 50;
                    byte[] nextChunk = null;
                    do {
                        nextChunk = reader.ReadBytes(chunkSizeInBytes);
                        totalSize += nextChunk.Length;
                        chunks.Add(nextChunk);
                    }
                    while (nextChunk.Length == chunkSizeInBytes);
                }

                _content = new byte[totalSize];
                int startIndex = 0;
                foreach (var chunk in chunks) {
                    chunk.CopyTo(_content, startIndex);
                    startIndex += chunk.Length;
                }
            }
            _initialFormat = ValidateImageContent(_content, "imageStream");
            _currentFormat = _initialFormat;
        }
Exemple #22
0
        public D900CdrElement DecodeRecord(Stream asnStream, bool skipFillers)
        {
            TlvObject tlv;
            long offset = asnStream.Position;

            // Verify that the next byte - Billing Record Tag (0xE1)
            if (!skipFillers)
            {
                int b = asnStream.ReadByte();
                if (b != 0xE1)
                {
                    return null;
                }
                asnStream.Seek(-1, SeekOrigin.Current);
            }

            BerDecoderResult pr = DecodeTlv(asnStream, out tlv, ref offset, 0, byte.MaxValue);

            D900CdrElement record = null;

            if (pr == BerDecoderResult.Finished)
            {

                record = _tlvParser.ParseTlvObject(tlv); ;
            }

            return record;
        }
        public void Save(Stream output)
        {
            BinaryWriter writer = new BinaryWriter(output);

            writer.Write(this.version);
            writer.Write((uint)0);
            writer.Write((uint)0);
            writer.Write(this.localeHash);
            writer.Write(this.blendLinks.Count);
            for (int i = 0; i < this.blendLinks.Count; i++)
            {
                writer.Write(i);
            }
            writer.Write(this.bidirectional);
            writer.Write(this.casPanelGroup);
            writer.Write(this.casPanelSubGroup);
            writer.Write((uint)0);

            uint tgiOffset = (uint)output.Position - 8;
            this.keytable.size = 4;
            writer.Write(this.blendLinks.Count);
            for (int i = 0; i < blendLinks.Count; i++)
            {
                this.blendLinks[i].Save(output);
                this.keytable.size += 16;
            }
            // Seek back to byte 4 to output the keytable length and size
            output.Seek(4, SeekOrigin.Begin);
            writer.Write(tgiOffset);
            writer.Write(this.keytable.size);
        }
        public void Import(object importSettingsViewModel, Stream stream, CogProject project)
        {
            XDocument doc;
            if (ZipFile.IsZipFile(stream, false))
            {
                stream.Seek(0, SeekOrigin.Begin);
                ZipFile zipFile = ZipFile.Read(stream);
                ZipEntry kmlEntry = zipFile.First(entry => entry.FileName.EndsWith(".kml"));
                doc = XDocument.Load(kmlEntry.OpenReader(), LoadOptions.SetLineInfo);
            }
            else
            {
                doc = XDocument.Load(stream, LoadOptions.SetLineInfo);
            }
            XElement root = doc.Root;
            Debug.Assert(root != null);

            if (root.GetDefaultNamespace() != DefaultNamespace)
                throw new ImportException("The specified file is not a KML file.");

            XElement document = root.Element(Kml + "Document");
            if (document == null)
                throw new ImportException("Missing Document element.");

            var regions = new Dictionary<Variety, List<GeographicRegion>>();
            LoadFolder(project, regions, document);

            foreach (KeyValuePair<Variety, List<GeographicRegion>> varietyRegions in regions)
                varietyRegions.Key.Regions.AddRange(varietyRegions.Value);
        }
 public override object Deserialize(Stream inputStream)
 {
     var sr = new StreamReader(inputStream);
     inputStream.Seek(0, SeekOrigin.Begin);
     var serialized = sr.ReadToEnd();
     return JSON.ToObject(serialized);
 }
        /// <summary>
        /// Checks that the actual stream has the same content as another one.
        /// </summary>
        /// <param name="check">The fluent check to be extended.</param>
        /// <param name="expected">The stream to compare content with.</param>
        /// <returns>A check link</returns>
        public static ICheckLink<ICheck<Stream>> HasSameSequenceOfBytesAs(this ICheck<Stream> check, Stream expected)
        {
            var checker = ExtensibilityHelper.ExtractChecker(check);
            var value = checker.Value;

            return checker.ExecuteCheck(
                () =>
                    {
                        if (value.Length != expected.Length)
                        {
                            var message = GenerateMessageWhenFullyDistinct(expected, checker, value);
                            throw new FluentCheckException(message.ToString());
                        }

                        // Keeps initial positions to be able to restore them after the check
                        var valueInitialPosition = value.Position;
                        var otherInitialPosition = expected.Position;

                        value.Seek(0, SeekOrigin.Begin);
                        expected.Seek(0, SeekOrigin.Begin);
                        while (value.Position < value.Length)
                        {
                            if (value.ReadByte() != expected.ReadByte())
                            {
                                var message = GenerateMessageWhenSameLenghtButDiffContent(expected, checker, value);
                                throw new FluentCheckException(message.ToString());
                            }
                        }

                        // Side-effect free. Restore initial positions of streams
                        value.Position = valueInitialPosition;
                        expected.Position = otherInitialPosition;
                    },
                BuildNegatedMessage(expected, value).ToString());
        }
Exemple #27
0
        public static string StreamToString(Stream stream)
        {
            stream.Seek(0, SeekOrigin.Begin);
            var reader = new StreamReader(stream);

            return reader.ReadToEnd();
        }
        /// <summary>
        /// 压缩流数据
        /// </summary>
        /// <param name="aSourceStream"></param>
        /// <returns></returns>
        public static byte[] EnCompress(Stream aSourceStream)
        {
            MemoryStream vMemory = new MemoryStream();

            aSourceStream.Seek(0, SeekOrigin.Begin);
            vMemory.Seek(0, SeekOrigin.Begin);
            try
            {
                using (GZipStream vZipStream = new GZipStream(vMemory, CompressionMode.Compress))
                {
                    byte[] vFileByte = new byte[1024];
                    int vRedLen = 0;
                    do
                    {
                        vRedLen = aSourceStream.Read(vFileByte, 0, vFileByte.Length);
                        vZipStream.Write(vFileByte, 0, vRedLen);
                    }
                    while (vRedLen > 0);
                }
            }
            finally
            {
                vMemory.Dispose();
            }
            return vMemory.ToArray();
        }
        public void ExportTo(IntelHexFile HexFile, Stream DestinationStream)
        {
            bool first = true;
            uint offset = 0;
            uint address = 0;
            foreach (IntelHexLine line in HexFile)
            {
                if (line is IntelHexDataLine)
                {
                    var dataLine = (IntelHexDataLine)line;
                    if (_trimStart && first)
                        offset = address + dataLine.Address;
                    first = false;

                    DestinationStream.Seek(address + dataLine.Address - offset, SeekOrigin.Begin);
                    dataLine.Data.Seek(0, SeekOrigin.Begin);
                    dataLine.Data.CopyTo(DestinationStream);
                }
                if (line is IntelHexExAddressLine)
                {
                    var addresLine = (IntelHexExAddressLine)line;
                    address = (uint)(addresLine.AddressExtension << 16);
                }
                if (line is IntelHexSegAddressLine)
                {
                    var addresLine = (IntelHexSegAddressLine)line;
                    address = addresLine.SegmentAddress;
                }
            }
        }
		public byte[] ComputeHash(Stream stream)
		{
			stream.Seek(0, SeekOrigin.Begin);
			var computeHash = hashAlgorithm.ComputeHash(stream);

			return computeHash;
		}