示例#1
0
        /// <inheritdoc />
        public override bool Equals(IccMultiProcessElement other)
        {
            if (base.Equals(other) && other is IccClutProcessElement element)
            {
                return(this.ClutValue.Equals(element.ClutValue));
            }

            return(false);
        }
        /// <inheritdoc />
        public override bool Equals(IccMultiProcessElement other)
        {
            if (base.Equals(other) && other is IccMatrixProcessElement element)
            {
                return(this.EqualsMatrix(element) &&
                       this.MatrixOx1.SequenceEqual(element.MatrixOx1));
            }

            return(false);
        }
        /// <summary>
        /// Reads a <see cref="IccMultiProcessElementsTagDataEntry"/>
        /// </summary>
        /// <returns>The read entry</returns>
        public IccMultiProcessElementsTagDataEntry ReadMultiProcessElementsTagDataEntry()
        {
            int start = this.currentIndex - 8;

            // TODO: Why are we storing variable
            ushort inChannelCount  = this.ReadUInt16();
            ushort outChannelCount = this.ReadUInt16();
            uint   elementCount    = this.ReadUInt32();

            IccPositionNumber[] positionTable = new IccPositionNumber[elementCount];
            for (int i = 0; i < elementCount; i++)
            {
                positionTable[i] = this.ReadPositionNumber();
            }

            IccMultiProcessElement[] elements = new IccMultiProcessElement[elementCount];
            for (int i = 0; i < elementCount; i++)
            {
                this.currentIndex = (int)positionTable[i].Offset + start;
                elements[i]       = this.ReadMultiProcessElement();
            }

            return(new IccMultiProcessElementsTagDataEntry(elements));
        }