263 {
264 bool framesChanged = false;
265
266 if (
frames.isEmpty())
return framesChanged;
267
268
270 for (; it !=
frames.end(); ++it) {
271 if (it.key() + it.value() - 1 >= range.
start()) {
272 break;
273 }
274 }
275
277 if (it.key() > range.
start()) {
278
279 const int oldStart = it.key();
280 const int newStart = range.
start();
282
284 it =
frames.insert(newStart, newLength);
286 framesChanged = true;
287 }
288
290 it.value() = -1;
291 framesChanged = true;
292 }
else if (it.value() != -1 && it.key() + it.value() - 1 < range.
end()) {
293 it.value() = range.
end() - it.key() + 1;
294 framesChanged = true;
295 }
296
297 it = std::next(it);
298
299 while (it !=
frames.end()) {
300 if (range.
isInfinite() || (it.value() != -1 && it.key() + it.value() - 1 <= range.
end())) {
303 framesChanged = true;
304 }
else if (it.key() > range.
end()) {
305 break;
306 }
else if (it.value() == -1 || it.key() + it.value() - 1 > range.
end()) {
307
308 int oldStart = it.key();
309 int newStart = range.
end() + 1;
310 int newLength = it.value() == -1 ? -1 : (it.key() + it.value() - 1 - newStart + 1);
311
313 frames.insert(newStart, newLength);
315 framesChanged = true;
316 break;
317 } else {
319 }
320 }
321 }
322
323 return framesChanged;
324}
#define KIS_SAFE_ASSERT_RECOVER_BREAK(cond)
virtual void moveFrame(int oldStart, int newStart)=0
virtual void forgetFrame(int start)=0