Exemplo n.º 1
0
        /// <summary>
        /// Сравнивает переданные ему снимки глифов с хранимыми в документе снимками.
        /// Если различий нет, возвращает true.
        /// </summary>
        /// <param name="snapshots">Снимки глифов.</param>
        private bool CompareSnapshots(IEnumerable <GlyphSnapshot> snapshots)
        {
            // Новые снимки.
            var sshots = new List <GlyphSnapshot>(snapshots);

            // Если количество глифов различно,
            // значит состояния документа различны.
            if (sshots.Count != _snapshots.Count)
            {
                return(false);
            }

            // Проходим по старым снимкам...
            foreach (GlyphSnapshot currSshot in _snapshots)
            {
                GlyphSnapshotsDiff diff = null;

                // Проходим по новым снимкам...
                foreach (GlyphSnapshot sshot in sshots)
                {
                    if (sshot.GlyphId == currSshot.GlyphId &&
                        sshot.GlyphType == currSshot.GlyphType)
                    {
                        // Ищем соответствующие глифы, чтобы посмотреть различие в них.
                        diff = new GlyphSnapshotsDiff(currSshot, sshot);
                    }
                }

                // Если каких-то глифов не хватает в одном из списков,
                // значит состояния документа различны.
                if (diff == null)
                {
                    return(false);
                }

                // Если найдены различия в значениях свойств глифов,
                // значит состояния документа различны.
                if (diff.Count > 0)
                {
                    return(false);
                }
            }

            // ...если никаких различий не нашли,
            // значит старое и новое состояние документа эквивалентны.
            return(true);
        }
Exemplo n.º 2
0
 public HistoryEventChangeGlyph(GlyphSnapshotsDiff diff)
     : this(diff.GlyphId, diff.Pairs)
 {
 }