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); }
/////////////////////////////////////////////////////////////////////////// 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); } }
internal void SavePixelData(BinaryReverseWriter writer) { Debug.WriteLine("Channel SavePixelData started at " + writer.BaseStream.Position.ToString()); writer.Write((short)m_imageCompression); writer.Write(m_imageData); }
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); } } }
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 }
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); }
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; }
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(); }
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(); } } }
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(); }
////////////////////////////////////////////////////////////////// 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); } }
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(); } }
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); } } }
internal void SavePixelData(BinaryReverseWriter writer) { //writer.Write(m_data); }
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(); } }
////////////////////////////////////////////////////////////////// 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); }