internal void ReadMultiProcessElementsTagDataEntry(byte[] data, IccMultiProcessElementsTagDataEntry expected) { IccDataReader reader = CreateReader(data); IccMultiProcessElementsTagDataEntry output = reader.ReadMultiProcessElementsTagDataEntry(); Assert.Equal(expected, output); }
internal void WriteMultiProcessElementsTagDataEntry(byte[] expected, IccMultiProcessElementsTagDataEntry data) { IccDataWriter writer = CreateWriter(); writer.WriteMultiProcessElementsTagDataEntry(data); byte[] output = writer.GetData(); Assert.Equal(expected, output); }
/// <summary> /// Writes a <see cref="IccMultiProcessElementsTagDataEntry"/> /// </summary> /// <param name="value">The entry to write</param> /// <returns>The number of bytes written</returns> public int WriteMultiProcessElementsTagDataEntry(IccMultiProcessElementsTagDataEntry value) { long start = this.dataStream.Position - 8; // 8 is the tag header size int count = this.WriteUInt16((ushort)value.InputChannelCount); count += this.WriteUInt16((ushort)value.OutputChannelCount); count += this.WriteUInt32((uint)value.Data.Length); // Jump over position table long tpos = this.dataStream.Position; this.dataStream.Position += value.Data.Length * 8; IccPositionNumber[] posTable = new IccPositionNumber[value.Data.Length]; for (int i = 0; i < value.Data.Length; i++) { uint offset = (uint)(this.dataStream.Position - start); int size = this.WriteMultiProcessElement(value.Data[i]); count += this.WritePadding(); posTable[i] = new IccPositionNumber(offset, (uint)size); count += size; } // Write position table long lpos = this.dataStream.Position; this.dataStream.Position = tpos; foreach (IccPositionNumber pos in posTable) { count += this.WritePositionNumber(pos); } this.dataStream.Position = lpos; return(count); }