MCPcopy Create free account
hub / github.com/LibreSprite/LibreSprite / moveFrame

Method moveFrame

src/app/document_api.cpp:214–243  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

212}
213
214void 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
245void DocumentApi::moveFrameLayer(Layer* layer, frame_t frame, frame_t beforeFrame)
246{

Callers 2

drop_range_opFunction · 0.80
reverse_framesFunction · 0.80

Calls 3

frameDurationMethod · 0.80
folderMethod · 0.80
lastFrameMethod · 0.45

Tested by

no test coverage detected