Example #1
0
        /// <summary>
        /// Loads flash movie from specified stream.
        /// </summary>
        /// <param name="input">input stream to load.</param>
        /// <param name="options">options to decode tags.</param>
        public void Load(Stream input, SwfTagDecodeOptions options)
        {
            var reader = new SwfReader(input)
            {
                TagDecodeOptions = options
            };

            //File Header
            var sig = reader.ReadASCII(3);

            // "FWS" or "CWS" for ZLIB compressed files (v6.0 or later)
            if (sig != "FWS" && sig != "CWS" && sig != "ZWS")
            {
                throw new BadImageFormatException("Not a valid SWF (Flash) file signature");
            }

            _version           = reader.ReadUInt8(); // file version
            reader.FileVersion = _version;
            uint fileLength = reader.ReadUInt32();   // file length

            //Debug.WriteLine(string.Format("SWF File Length = {0}", fileLength));

            // If the file is compressed, this is where the ZLIB decompression ("inflate") begins
            if (sig[0] == 'C')
            {
                reader.Stream = Zip.Uncompress(input);
            }
            else if (sig[0] == 'Z')             // LZMA since v13
            {
                // reader.Stream = new MemoryStream(Compression.Lzma.Decompress(input));
                throw new NotImplementedException();
            }

            //Movie Header
            var frameSize = reader.ReadRect();

            _frameSize.Width  = frameSize.Width.FromTwips();
            _frameSize.Height = frameSize.Height.FromTwips();
            _frameRate        = reader.ReadFixed16();
            _frameCount       = reader.ReadUInt16();

            //Movie Content
            _tags.Read(reader);
        }
Example #2
0
 public SwfMovie(Stream input, SwfTagDecodeOptions decodeOptions)
     : this()
 {
     Load(input, decodeOptions);
 }
Example #3
0
 public SwfMovie(string path, SwfTagDecodeOptions decodeOptions)
     : this()
 {
     Load(path, decodeOptions);
 }
Example #4
0
 /// <summary>
 /// Loads flash movie from specified file.
 /// </summary>
 /// <param name="path">file path to load</param>
 /// <param name="options">options to decode tags</param>
 public void Load(string path, SwfTagDecodeOptions options)
 {
     using (var fs = File.OpenRead(path))
         Load(fs, options);
 }