/// <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); }
public HistoryEventChangeGlyph(GlyphSnapshotsDiff diff) : this(diff.GlyphId, diff.Pairs) { }