コード例 #1
0
        void AddEntry(StreamDecorator self)
        {
            var src    = (MemoryStream)self.BaseStream;
            var buffer = src.ToArray();
            var x      = zip.CreateEntry(self.UserState.ToString(), CompressionLevel);

            using (var dst = x.Open())
                dst.Write(buffer, 0, buffer.Length);
        }
コード例 #2
0
        public void Save(CFStream cfStream)
        {
            //throw new NotImplementedException("API Unstable - Work in progress - Milestone 2.3.0.0");
            //properties.Sort((a, b) => a.PropertyIdentifier.CompareTo(b.PropertyIdentifier));

            Stream       s  = new StreamDecorator(cfStream);
            BinaryWriter bw = new BinaryWriter(s);

            PropertySetStream ps = new PropertySetStream
            {
                ByteOrder        = 0xFFFE,
                Version          = 0,
                SystemIdentifier = 0x00020006,
                CLSID            = Guid.Empty,

                NumPropertySets = 1,

                FMTID0  = this.ContainerType == ContainerType.SummaryInfo ? new Guid("{F29F85E0-4FF9-1068-AB91-08002B27B3D9}") : new Guid("{D5CDD502-2E9C-101B-9397-08002B2CF9AE}"),
                Offset0 = 0,

                FMTID1  = Guid.Empty,
                Offset1 = 0,

                PropertySet0 = new PropertySet
                {
                    NumProperties = (uint)this.Properties.Count(),
                    PropertyIdentifierAndOffsets = new List <PropertyIdentifierAndOffset>(),
                    Properties      = new List <Interfaces.IProperty>(),
                    PropertyContext = this.Context
                }
            };

            foreach (var op in this.Properties)
            {
                ITypedPropertyValue p = PropertyFactory.Instance.NewProperty(op.VTType, this.Context.CodePage);
                p.Value = op.Value;
                ps.PropertySet0.Properties.Add(p);
                ps.PropertySet0.PropertyIdentifierAndOffsets.Add(new PropertyIdentifierAndOffset()
                {
                    PropertyIdentifier = op.PropertyIdentifier, Offset = 0
                });
            }

            ps.PropertySet0.NumProperties = (uint)this.Properties.Count();

            if (HasUserDefinedProperties)
            {
                ps.NumPropertySets = 2;

                ps.PropertySet1 = new PropertySet
                {
                    NumProperties = (uint)this.UserDefinedProperties.Properties.Count(),
                    PropertyIdentifierAndOffsets = new List <PropertyIdentifierAndOffset>(),
                    Properties      = new List <Interfaces.IProperty>(),
                    PropertyContext = UserDefinedProperties.Context
                };

                ps.FMTID1  = new Guid("{D5CDD502-2E9C-101B-9397-08002B2CF9AE}");
                ps.Offset1 = 0;

                foreach (var op in this.Properties)
                {
                    ITypedPropertyValue p = PropertyFactory.Instance.NewProperty(op.VTType, ps.PropertySet1.PropertyContext.CodePage);
                    p.Value = op.Value;
                    ps.PropertySet1.Properties.Add(p);
                    ps.PropertySet1.PropertyIdentifierAndOffsets.Add(new PropertyIdentifierAndOffset()
                    {
                        PropertyIdentifier = op.PropertyIdentifier, Offset = 0
                    });
                }
            }

            ps.Write(bw);
        }
コード例 #3
0
 public void OneTimeSetUp()
 {
     _mockStream = new Mock <Stream>();
     _decorator  = new StreamDecorator(_mockStream.Object);
 }
コード例 #4
0
 void AddEntry(StreamDecorator self) =>
 outputs.Add(self.UserState.ToString(), ((MemoryStream)self.BaseStream).ToArray());