コード例 #1
0
            public void Save(BinaryReverseWriter writer)
            {
                Debug.WriteLine("BlendingRanges Save started at " + writer.BaseStream.Position.ToString());

                writer.Write((uint)m_data.Length);
                writer.Write(m_data);
            }
コード例 #2
0
            ///////////////////////////////////////////////////////////////////////////

            public void Save(BinaryReverseWriter writer)
            {
                Debug.WriteLine("Mask Save started at " + writer.BaseStream.Position.ToString());

                if (m_rect.IsEmpty)
                {
                    writer.Write((uint)0);
                    return;
                }

                using (new LengthWriter(writer))
                {
                    writer.Write(m_rect.Top);
                    writer.Write(m_rect.Left);
                    writer.Write(m_rect.Bottom);
                    writer.Write(m_rect.Right);

                    writer.Write(m_defaultColor);

                    writer.Write((byte)m_flags.Data);

                    // padding 2 bytes so that size is 20
                    writer.Write((int)0);
                }
            }
コード例 #3
0
            internal void SavePixelData(BinaryReverseWriter writer)
            {
                Debug.WriteLine("Channel SavePixelData started at " + writer.BaseStream.Position.ToString());

                writer.Write((short)m_imageCompression);
                writer.Write(m_imageData);
            }
コード例 #4
0
        public void Save(BinaryReverseWriter writer)
        {
            Debug.WriteLine("Layer Save started at " + writer.BaseStream.Position.ToString());

            writer.Write(m_rect.Top);
            writer.Write(m_rect.Left);
            writer.Write(m_rect.Bottom);
            writer.Write(m_rect.Right);

            //-----------------------------------------------------------------------

            writer.Write((short)m_channels.Count);
            foreach (Channel ch in m_channels)
            {
                ch.Save(writer);
            }

            //-----------------------------------------------------------------------

            string signature = "8BIM";

            writer.Write(signature.ToCharArray());
            writer.Write(m_blendModeKey.ToCharArray());
            writer.Write(m_opacity);
            writer.Write((byte)(m_clipping ? 1 : 0));

            writer.Write((byte)m_flags.Data);

            //-----------------------------------------------------------------------

            writer.Write((byte)0);

            //-----------------------------------------------------------------------

            using (new LengthWriter(writer))
            {
                m_maskData.Save(writer);
                m_blendingRangesData.Save(writer);

                long namePosition = writer.BaseStream.Position;

                writer.WritePascalString(m_name);

                int paddingBytes = (int)((writer.BaseStream.Position - namePosition) % 4);
                Debug.Print("Layer {0} write padding bytes after name", paddingBytes);

                for (int i = 0; i < paddingBytes; i++)
                {
                    writer.Write((byte)0);
                }

                foreach (AdjusmentLayerInfo info in m_adjustmentInfo)
                {
                    info.Save(writer);
                }
            }
        }
コード例 #5
0
            internal void Save(BinaryReverseWriter writer)
            {
                Debug.WriteLine("Channel Save started at " + writer.BaseStream.Position.ToString());

                writer.Write(m_id);

                CompressImageData();

                writer.Write(Data.Length + 2); // 2 bytes for the image compression
            }
コード例 #6
0
            public void Save(BinaryReverseWriter writer)
            {
                Debug.WriteLine("AdjusmentLayerInfo Save started at " + writer.BaseStream.Position.ToString());

                string signature = "8BIM";

                writer.Write(signature.ToCharArray());
                writer.Write(m_key.ToCharArray());
                writer.Write((uint)m_data.Length);
                writer.Write(m_data);
            }
コード例 #7
0
        public LengthWriter(BinaryReverseWriter writer)
        {
            m_writer = writer;

            // we will write the correct length later, so remember
            // the position
            m_lengthPosition = m_writer.BaseStream.Position;
            m_writer.Write((uint)0xFEEDFEED);

            // remember the start  position for calculation Image
            // resources length
            m_startPosition = m_writer.BaseStream.Position;
        }
コード例 #8
0
ファイル: AlphaChannels.cs プロジェクト: vantruc/skimpt
        protected override void StoreData()
        {
            System.IO.MemoryStream stream = new System.IO.MemoryStream();
              BinaryReverseWriter writer = new BinaryReverseWriter(stream);

              foreach (string name in m_channelNames)
              {
            writer.Write((byte)name.Length);
            writer.Write(name.ToCharArray());
              }

              writer.Close();
              stream.Close();

              Data = stream.ToArray();
        }
コード例 #9
0
ファイル: AlphaChannels.cs プロジェクト: xiexin36/skimpt
        protected override void StoreData()
        {
            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            BinaryReverseWriter    writer = new BinaryReverseWriter(stream);

            foreach (string name in m_channelNames)
            {
                writer.Write((byte)name.Length);
                writer.Write(name.ToCharArray());
            }

            writer.Close();
            stream.Close();

            Data = stream.ToArray();
        }
コード例 #10
0
        protected override void StoreData()
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new BinaryReverseWriter(stream))
                {
                    foreach (string name in m_channelNames)
                    {
                        writer.Write((byte)name.Length);
                        writer.Write(name.ToCharArray());
                    }

                    Data = stream.ToArray();
                }
            }
        }
コード例 #11
0
ファイル: AlphaChannels.cs プロジェクト: SchwarzerLoewe/Paint
        protected override void StoreData()
        {
            using (var stream = new MemoryStream())
            {
                using (var writer = new BinaryReverseWriter(stream))
                {
                    foreach (string name in m_channelNames)
                    {
                        writer.Write((byte)name.Length);
                        writer.Write(name.ToCharArray());
                    }

                    Data = stream.ToArray();
                }
            }
        }
コード例 #12
0
        protected override void StoreData()
        {
            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            BinaryReverseWriter    writer = new BinaryReverseWriter(stream);

            writer.Write((Int16)m_hRes);
            writer.Write((Int32)m_hResUnit);
            writer.Write((Int16)m_widthUnit);

            writer.Write((Int16)m_vRes);
            writer.Write((Int32)m_vResUnit);
            writer.Write((Int16)m_heightUnit);

            writer.Close();
            stream.Close();

            Data = stream.ToArray();
        }
コード例 #13
0
ファイル: ImageResource.cs プロジェクト: xiexin36/skimpt
        //////////////////////////////////////////////////////////////////

        public void Save(BinaryReverseWriter writer)
        {
            StoreData();

            if (m_osType == String.Empty)
            {
                m_osType = "8BIM";
            }

            writer.Write(m_osType.ToCharArray());
            writer.Write(m_id);

            writer.WritePascalString(m_name);

            writer.Write((int)m_data.Length);
            writer.Write(m_data);

            if (writer.BaseStream.Position % 2 == 1)
            {
                writer.Write((byte)0);
            }
        }
コード例 #14
0
ファイル: Layer.cs プロジェクト: SchwarzerLoewe/Paint
            ///////////////////////////////////////////////////////////////////////////

            public void Save(BinaryReverseWriter writer)
            {
                Debug.WriteLine("Mask Save started at " + writer.BaseStream.Position.ToString());

                if (m_rect.IsEmpty)
                {
                    writer.Write((uint)0);
                    return;
                }

                using (new LengthWriter(writer))
                {
                    writer.Write(m_rect.Top);
                    writer.Write(m_rect.Left);
                    writer.Write(m_rect.Bottom);
                    writer.Write(m_rect.Right);

                    writer.Write(m_defaultColor);

                    writer.Write((byte)m_flags.Data);

                    // padding 2 bytes so that size is 20
                    writer.Write((int)0);
                }
            }
コード例 #15
0
ファイル: Layer.cs プロジェクト: SchwarzerLoewe/Paint
            private void CompressImageData()
            {
                if (m_imageCompression == ImageCompression.Rle)
                {
                    MemoryStream dataStream = new MemoryStream();
                    BinaryReverseWriter writer = new BinaryReverseWriter(dataStream);

                    // we will write the correct lengths later, so remember
                    // the position
                    long lengthPosition = writer.BaseStream.Position;

                    int[] rleRowLenghs = new int[m_layer.m_rect.Height];

                    if (m_imageCompression == ImageCompression.Rle)
                    {
                        for (int i = 0; i < rleRowLenghs.Length; i++)
                        {
                            writer.Write((short)0x1234);
                        }
                    }

                    //---------------------------------------------------------------

                    int bytesPerRow = 0;

                    switch (m_layer.PsdFile.Depth)
                    {
                        case 1:
                            bytesPerRow = m_layer.m_rect.Width;//NOT Shure
                            break;
                        case 8:
                            bytesPerRow = m_layer.m_rect.Width;
                            break;
                        case 16:
                            bytesPerRow = m_layer.m_rect.Width * 2;
                            break;
                    }

                    //---------------------------------------------------------------

                    for (int row = 0; row < m_layer.m_rect.Height; row++)
                    {
                        int rowIndex = row * m_layer.m_rect.Width;
                        rleRowLenghs[row] = RleHelper.EncodedRow(writer.BaseStream, m_imageData, rowIndex, bytesPerRow);
                    }

                    //---------------------------------------------------------------

                    long endPosition = writer.BaseStream.Position;

                    writer.BaseStream.Position = lengthPosition;

                    for (int i = 0; i < rleRowLenghs.Length; i++)
                    {
                        writer.Write((short)rleRowLenghs[i]);
                    }

                    writer.BaseStream.Position = endPosition;

                    dataStream.Close();

                    m_data = dataStream.ToArray();

                    dataStream.Dispose();
                }
                else
                {
                    m_data = (byte[])m_imageData.Clone();
                }
            }
コード例 #16
0
ファイル: Layer.cs プロジェクト: SchwarzerLoewe/Paint
            internal void SavePixelData(BinaryReverseWriter writer)
            {
                Debug.WriteLine("Channel SavePixelData started at " + writer.BaseStream.Position.ToString());

                writer.Write((short)m_imageCompression);
                writer.Write(m_imageData);
            }
コード例 #17
0
ファイル: Layer.cs プロジェクト: SchwarzerLoewe/Paint
            internal void Save(BinaryReverseWriter writer)
            {
                Debug.WriteLine("Channel Save started at " + writer.BaseStream.Position.ToString());

                writer.Write(m_id);

                CompressImageData();

                writer.Write(Data.Length + 2); // 2 bytes for the image compression
            }
コード例 #18
0
ファイル: Layer.cs プロジェクト: SchwarzerLoewe/Paint
            public void Save(BinaryReverseWriter writer)
            {
                Debug.WriteLine("BlendingRanges Save started at " + writer.BaseStream.Position.ToString());

                writer.Write((uint)m_data.Length);
                writer.Write(m_data);
            }
コード例 #19
0
ファイル: Layer.cs プロジェクト: SchwarzerLoewe/Paint
            public void Save(BinaryReverseWriter writer)
            {
                Debug.WriteLine("AdjusmentLayerInfo Save started at " + writer.BaseStream.Position.ToString());

                string signature = "8BIM";

                writer.Write(signature.ToCharArray());
                writer.Write(m_key.ToCharArray());
                writer.Write((uint)m_data.Length);
                writer.Write(m_data);
            }
コード例 #20
0
ファイル: Layer.cs プロジェクト: SchwarzerLoewe/Paint
        public void Save(BinaryReverseWriter writer)
        {
            Debug.WriteLine("Layer Save started at " + writer.BaseStream.Position.ToString());

            writer.Write(m_rect.Top);
            writer.Write(m_rect.Left);
            writer.Write(m_rect.Bottom);
            writer.Write(m_rect.Right);

            //-----------------------------------------------------------------------

            writer.Write((short)m_channels.Count);
            foreach (Channel ch in m_channels)
                ch.Save(writer);

            //-----------------------------------------------------------------------

            string signature = "8BIM";
            writer.Write(signature.ToCharArray());
            writer.Write(m_blendModeKey.ToCharArray());
            writer.Write(m_opacity);
            writer.Write((byte)(m_clipping ? 1 : 0));

            writer.Write((byte)m_flags.Data);

            //-----------------------------------------------------------------------

            writer.Write((byte)0);

            //-----------------------------------------------------------------------

            using (new LengthWriter(writer))
            {
                m_maskData.Save(writer);
                m_blendingRangesData.Save(writer);

                long namePosition = writer.BaseStream.Position;

                writer.WritePascalString(m_name);

                int paddingBytes = (int)((writer.BaseStream.Position - namePosition) % 4);
                Debug.Print("Layer {0} write padding bytes after name", paddingBytes);

                for (int i = 0; i < paddingBytes; i++)
                    writer.Write((byte)0);

                foreach (AdjusmentLayerInfo info in m_adjustmentInfo)
                {
                    info.Save(writer);
                }
            }
        }
コード例 #21
0
ファイル: Layer.cs プロジェクト: SchwarzerLoewe/Paint
 internal void SavePixelData(BinaryReverseWriter writer)
 {
     //writer.Write(m_data);
 }
コード例 #22
0
ファイル: ResolutionInfo.cs プロジェクト: vantruc/skimpt
        protected override void StoreData()
        {
            System.IO.MemoryStream stream = new System.IO.MemoryStream();
              BinaryReverseWriter writer = new BinaryReverseWriter(stream);

              writer.Write((Int16)m_hRes);
              writer.Write((Int32)m_hResUnit);
              writer.Write((Int16)m_widthUnit);

              writer.Write((Int16)m_vRes);
              writer.Write((Int32)m_vResUnit);
              writer.Write((Int16)m_heightUnit);

              writer.Close();
              stream.Close();

              Data = stream.ToArray();
        }
コード例 #23
0
            private void CompressImageData()
            {
                if (m_imageCompression == ImageCompression.Rle)
                {
                    MemoryStream        dataStream = new MemoryStream();
                    BinaryReverseWriter writer     = new BinaryReverseWriter(dataStream);

                    // we will write the correct lengths later, so remember
                    // the position
                    long lengthPosition = writer.BaseStream.Position;

                    int[] rleRowLenghs = new int[m_layer.m_rect.Height];

                    if (m_imageCompression == ImageCompression.Rle)
                    {
                        for (int i = 0; i < rleRowLenghs.Length; i++)
                        {
                            writer.Write((short)0x1234);
                        }
                    }

                    //---------------------------------------------------------------

                    int bytesPerRow = 0;

                    switch (m_layer.PsdFile.Depth)
                    {
                    case 1:
                        bytesPerRow = m_layer.m_rect.Width;    //NOT Shure
                        break;

                    case 8:
                        bytesPerRow = m_layer.m_rect.Width;
                        break;

                    case 16:
                        bytesPerRow = m_layer.m_rect.Width * 2;
                        break;
                    }

                    //---------------------------------------------------------------

                    for (int row = 0; row < m_layer.m_rect.Height; row++)
                    {
                        int rowIndex = row * m_layer.m_rect.Width;
                        rleRowLenghs[row] = RleHelper.EncodedRow(writer.BaseStream, m_imageData, rowIndex, bytesPerRow);
                    }

                    //---------------------------------------------------------------

                    long endPosition = writer.BaseStream.Position;

                    writer.BaseStream.Position = lengthPosition;

                    for (int i = 0; i < rleRowLenghs.Length; i++)
                    {
                        writer.Write((short)rleRowLenghs[i]);
                    }

                    writer.BaseStream.Position = endPosition;

                    dataStream.Close();

                    m_data = dataStream.ToArray();

                    dataStream.Dispose();
                }
                else
                {
                    m_data = (byte[])m_imageData.Clone();
                }
            }
コード例 #24
0
ファイル: ImageResource.cs プロジェクト: vantruc/skimpt
        //////////////////////////////////////////////////////////////////
        public void Save(BinaryReverseWriter writer)
        {
            StoreData();

            if(m_osType == String.Empty)
                m_osType = "8BIM";

            writer.Write(m_osType.ToCharArray());
            writer.Write(m_id);

            writer.WritePascalString(m_name);

            writer.Write((int)m_data.Length);
            writer.Write(m_data);

            if(writer.BaseStream.Position % 2 == 1)
                writer.Write((byte)0);
        }
コード例 #25
0
        public LengthWriter(BinaryReverseWriter writer)
        {
            m_writer = writer;

            // we will write the correct length later, so remember
            // the position
            m_lengthPosition = m_writer.BaseStream.Position;
            m_writer.Write((uint)0xFEEDFEED);

            // remember the start  position for calculation Image
            // resources length
            m_startPosition = m_writer.BaseStream.Position;
        }
コード例 #26
0
 internal void SavePixelData(BinaryReverseWriter writer)
 {
     //writer.Write(m_data);
 }