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