public void MarkSector(int track, int sectorIndex, SectorProcessResult processResult, MapCell mapCell) { Tracks[track].Layout.Data[sectorIndex].ProcessResult = processResult; Tracks[track].Layout.Data[sectorIndex].MapCellValue = mapCell; Tracks[track].MapModified = true; Modified = true; }
public void SetSectorsProcessResult(SectorProcessResult processResult, int index, int length = 1) { for (int i = index, last = Math.Min(index + length, Sectors.Length); i < last; i++) { Sectors[i] = processResult; } SectorsChanged(index, length); Modified = true; }
public void MarkSectorRange(int firstTrack, int lastTrack, SectorProcessResult processResult, MapCell mapCell) { for (int i = firstTrack; i < lastTrack; i++) { TrackFormat tf = Tracks[i]; for (int j = 0; j < tf.Layout.Cnt; j++) { tf.Layout.Data[j].ProcessResult = processResult; tf.Layout.Data[j].MapCellValue = mapCell; } tf.MapModified = true; } Modified = true; }
public void SetSize(int sizeSectors) { if (Sectors.Length == sizeSectors) { return; } int newLen = sizeSectors * SectorSize; int oldSize = Sectors.Length; byte[] newData = new byte[newLen]; Array.Copy(Data, 0, newData, 0, Math.Min(Data.Length, newLen)); Data = newData; SectorProcessResult[] newSectors = new SectorProcessResult[sizeSectors]; Array.Copy(Sectors, 0, newSectors, 0, Math.Min(Sectors.Length, sizeSectors)); Sectors = newSectors; SectorsChanged(Math.Min(oldSize, sizeSectors), Math.Abs(oldSize - sizeSectors)); }
public void Merge(DiskImage image, out int addedReadSectors) { int size = Math.Max(image.Data.Length, Data.Length); int sizeSectors = size / SectorSize; byte[] newData = new byte[size]; SectorProcessResult[] sectors = new SectorProcessResult[sizeSectors]; addedReadSectors = 0; for (int i = 0; i < sizeSectors; i++) { if (i < Sectors.Length && Sectors[i] == SectorProcessResult.Good) { Array.Copy(Data, i * SectorSize, newData, i * SectorSize, SectorSize); sectors[i] = SectorProcessResult.Good; } else if (i < image.Sectors.Length && image.Sectors[i] == SectorProcessResult.Good) { Array.Copy(image.Data, i * SectorSize, newData, i * SectorSize, SectorSize); sectors[i] = SectorProcessResult.Good; addedReadSectors++; } else if (i < Sectors.Length && Sectors[i] == SectorProcessResult.Bad) { sectors[i] = SectorProcessResult.Bad; } else if (i < image.Sectors.Length && image.Sectors[i] == SectorProcessResult.Bad) { sectors[i] = SectorProcessResult.Bad; } else { sectors[i] = SectorProcessResult.Unprocessed; } } Data = newData; Sectors = sectors; SectorsChanged(0, Sectors.Length); }