Пример #1
0
        internal void ReadTextDescriptionTagDataEntry(byte[] data, IccTextDescriptionTagDataEntry expected)
        {
            IccDataReader reader = CreateReader(data);

            IccTextDescriptionTagDataEntry output = reader.ReadTextDescriptionTagDataEntry();

            Assert.Equal(expected, output);
        }
        internal void WriteTextDescriptionTagDataEntry(byte[] expected, IccTextDescriptionTagDataEntry data)
        {
            IccDataWriter writer = CreateWriter();

            writer.WriteTextDescriptionTagDataEntry(data);
            byte[] output = writer.GetData();

            Assert.Equal(expected, output);
        }
        /// <summary>
        /// Writes a <see cref="IccTextDescriptionTagDataEntry"/>
        /// </summary>
        /// <param name="value">The entry to write</param>
        /// <returns>The number of bytes written</returns>
        public int WriteTextDescriptionTagDataEntry(IccTextDescriptionTagDataEntry value)
        {
            int size, count = 0;

            if (value.Ascii == null)
            {
                count += this.WriteUInt32(0);
            }
            else
            {
                this.dataStream.Position += 4;
                count += size = this.WriteAsciiString(value.Ascii + '\0');
                this.dataStream.Position -= size + 4;
                count += this.WriteUInt32((uint)size);
                this.dataStream.Position += size;
            }

            if (value.Unicode == null)
            {
                count += this.WriteUInt32(0);
                count += this.WriteUInt32(0);
            }
            else
            {
                this.dataStream.Position += 8;
                count += size = this.WriteUnicodeString(value.Unicode + '\0');
                this.dataStream.Position -= size + 8;
                count += this.WriteUInt32(value.UnicodeLanguageCode);
                count += this.WriteUInt32((uint)value.Unicode.Length + 1);
                this.dataStream.Position += size;
            }

            if (value.ScriptCode == null)
            {
                count += this.WriteUInt16(0);
                count += this.WriteByte(0);
                count += this.WriteEmpty(67);
            }
            else
            {
                this.dataStream.Position += 3;
                count += size = this.WriteAsciiString(value.ScriptCode, 67, true);
                this.dataStream.Position -= size + 3;
                count += this.WriteUInt16(value.ScriptCodeCode);
                count += this.WriteByte((byte)(value.ScriptCode.Length > 66 ? 67 : value.ScriptCode.Length + 1));
                this.dataStream.Position += size;
            }

            return(count);
        }