| 212 | } |
| 213 | |
| 214 | void DocumentApi::moveFrame(Sprite* sprite, frame_t frame, frame_t beforeFrame) |
| 215 | { |
| 216 | if (frame != beforeFrame && |
| 217 | frame >= 0 && |
| 218 | frame <= sprite->lastFrame() && |
| 219 | beforeFrame >= 0 && |
| 220 | beforeFrame <= sprite->lastFrame()+1) { |
| 221 | // Change the frame-lengths. |
| 222 | int frlen_aux = sprite->frameDuration(frame); |
| 223 | |
| 224 | // Moving the frame to the future. |
| 225 | if (frame < beforeFrame) { |
| 226 | for (frame_t c=frame; c<beforeFrame-1; ++c) |
| 227 | setFrameDuration(sprite, c, sprite->frameDuration(c+1)); |
| 228 | setFrameDuration(sprite, beforeFrame-1, frlen_aux); |
| 229 | } |
| 230 | // Moving the frame to the past. |
| 231 | else if (beforeFrame < frame) { |
| 232 | for (frame_t c=frame; c>beforeFrame; --c) |
| 233 | setFrameDuration(sprite, c, sprite->frameDuration(c-1)); |
| 234 | setFrameDuration(sprite, beforeFrame, frlen_aux); |
| 235 | } |
| 236 | |
| 237 | adjustFrameTags(sprite, frame, -1, true); |
| 238 | adjustFrameTags(sprite, beforeFrame, +1, true); |
| 239 | |
| 240 | // Change cel positions. |
| 241 | moveFrameLayer(sprite->folder(), frame, beforeFrame); |
| 242 | } |
| 243 | } |
| 244 | |
| 245 | void DocumentApi::moveFrameLayer(Layer* layer, frame_t frame, frame_t beforeFrame) |
| 246 | { |
no test coverage detected