/// <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);
        }
Example #2
0
        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);
        }