void OffsetRange(range& ioRange, cell inOffset, SplitType what, int split, int shift) { bool wasSpecial = false; if (shift < 0 && what != noSplit) if (what == hSplit) { if (abs(ioRange.left) >= split && abs(ioRange.right) <= split - shift) ioRange.Set(0, 0, 0, 0); else if (abs(ioRange.left) >= split && abs(ioRange.left) <= split - shift) { if (ioRange.left < 0) ioRange.left = -split; else ioRange.left = split; OffsetCell(ioRange.BotRight(), inOffset, what, split, shift); wasSpecial = true; } else if (abs(ioRange.right) >= split && abs(ioRange.right) <= split - shift) { if (ioRange.right < 0) ioRange.right = -split + 1; else ioRange.right = split - 1; OffsetCell(ioRange.TopLeft(), inOffset, what, split, shift); wasSpecial = true; } } else if (what == vSplit) { if (abs(ioRange.top) >= split && abs(ioRange.bottom) <= split - shift) ioRange.Set(0, 0, 0, 0); else if (abs(ioRange.top) >= split && abs(ioRange.top) <= split - shift) { if (ioRange.top < 0) ioRange.top = -split; else ioRange.top = split; OffsetCell(ioRange.BotRight(), inOffset, what, split, shift); wasSpecial = true; } else if (abs(ioRange.bottom) >= split && abs(ioRange.bottom) <= split - shift) { if (ioRange.bottom < 0) ioRange.bottom = -split + 1; else ioRange.bottom = split - 1; OffsetCell(ioRange.TopLeft(), inOffset, what, split, shift); wasSpecial = true; } } if (!wasSpecial) { OffsetCell(ioRange.TopLeft(), inOffset, what, split, shift); OffsetCell(ioRange.BotRight(), inOffset, what, split, shift); } } /* OffsetRange */