public void Extract(ArchiveEntry entry, StreamSequence output, Stream input, Byte[] buff)
        {
            int size = (int)entry.UncompressedSize;

            if (size == 0)
            {
                return;
            }

            ScdFileReader reader = new ScdFileReader(input);

            WaveStream[] waveStreams = reader.Read();
            if (waveStreams.Length == 0)
            {
                return;
            }

            Extract(output, waveStreams[0], buff);

            for (int i = 1; i < waveStreams.Length; i++)
            {
                if (!output.TryCreateNextStream(i.ToString("D3")))
                {
                    throw new InvalidDataException();
                }

                Extract(output, waveStreams[i], buff);
            }
        }
Beispiel #2
0
        public void Extract()
        {
            if (_leafs.Length == 0)
            {
                return;
            }

            String root = InteractionService.WorkingLocation.Provide().ProvideExtractedDirectory();

            byte[] buff = new byte[32 * 1024];
            foreach (ArchiveEntry entry in _leafs)
            {
                String targetExtension;
                IArchiveEntryExtractor extractor = GetExtractor(entry, out targetExtension);
                if (extractor == null)
                {
                    continue;
                }

                String targetPath    = Path.Combine(root, PathEx.ChangeMultiDotExtension(entry.Name, targetExtension));
                String directoryPath = Path.GetDirectoryName(targetPath);
                _target.CreateDirectory(directoryPath);

                using (Stream input = _listing.Accessor.ExtractBinary(entry))
                    using (StreamSequence output = _target.Create(targetPath))
                        extractor.Extract(entry, output, input, buff);
            }
        }
 public RenameElementCommand(Document document, IStream element, string name)
     : base(document)
 {
     _element = (StreamSequence)element;
     _oldName = _element.Name;
     _newName = name;
 }
Beispiel #4
0
        public void Extract(ArchiveEntry entry, StreamSequence output, Stream input, Byte[] buff)
        {
            int size = (int)entry.UncompressedSize;

            if (size == 0)
            {
                return;
            }

            input.CopyToStream(output, size, buff);
        }
Beispiel #5
0
        public void Extract(ArchiveEntry entry, StreamSequence output, Stream input, Byte[] buff)
        {
            int size = (int)entry.UncompressedSize;

            if (size == 0)
            {
                return;
            }

            ZtrFileUnpacker unpacker = new ZtrFileUnpacker(input, InteractionService.TextEncoding.Provide().Encoding);

            ZtrFileEntry[] entries = unpacker.Unpack();

            ZtrTextWriter writer = new ZtrTextWriter(output, StringsZtrFormatter.Instance);

            writer.Write(entry.Name, entries);
        }