mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-14 04:19:12 +00:00
Fix onion skin rendering (fix #3739)
This commit is contained in:
parent
6702844314
commit
b1335c2c00
@ -232,6 +232,14 @@ bool Playback::handleExitFrame(const frame_t frameDelta)
|
||||
m_playing.back()->invertForward();
|
||||
return decrementRepeat(frameDelta);
|
||||
}
|
||||
else if (m_playMode == PlayInLoop && frameDelta < 0
|
||||
&& m_frame == firstTagFrame(tag)) {
|
||||
PLAY_TRACE(" Going to last frame=", lastTagFrame(tag),
|
||||
" (PlayInLoop) frame=", m_frame, " forward=", forward);
|
||||
|
||||
m_frame = lastTagFrame(tag);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (frameDelta > 0 && m_frame == m_sprite->lastFrame()) {
|
||||
@ -486,7 +494,7 @@ frame_t Playback::firstTagFrame(const Tag* tag)
|
||||
ASSERT(!m_playing.empty());
|
||||
int forward = m_playing.back()->forward;
|
||||
return (forward < 0 ? tag->toFrame():
|
||||
tag->fromFrame());
|
||||
tag->fromFrame());
|
||||
}
|
||||
|
||||
frame_t Playback::lastTagFrame(const Tag* tag)
|
||||
|
@ -858,11 +858,13 @@ void Render::renderOnionskin(
|
||||
m_sprite,
|
||||
TagsList(), // TODO add an onionskin option to iterate subtags
|
||||
frame,
|
||||
Playback::PlayInLoop,
|
||||
loop ? Playback::PlayInLoop : Playback::PlayAll,
|
||||
loop);
|
||||
play.nextFrame(-m_onionskin.prevFrames());
|
||||
frame_t prevFrames = (loop ? m_onionskin.prevFrames():
|
||||
std::min(frame, m_onionskin.prevFrames()));
|
||||
play.nextFrame(-prevFrames);
|
||||
|
||||
for (frame_t frameOut = frame - m_onionskin.prevFrames();
|
||||
for (frame_t frameOut = frame - prevFrames;
|
||||
frameOut <= frame + m_onionskin.nextFrames();
|
||||
++frameOut, play.nextFrame()) {
|
||||
const frame_t frameIn = play.frame();
|
||||
|
Loading…
x
Reference in New Issue
Block a user