Draw document's extra cel (brush preview) in the current frame only

This commit is contained in:
David Capello 2015-08-12 17:24:48 -03:00
parent 436866c128
commit 1b930d4d42
6 changed files with 7 additions and 5 deletions

View File

@ -242,7 +242,7 @@ void Document::destroyExtraCel()
m_extraCelType = render::ExtraType::NONE;
}
void Document::prepareExtraCel(const gfx::Rect& bounds, int opacity)
void Document::prepareExtraCel(const gfx::Rect& bounds, frame_t frame, int opacity)
{
ASSERT(sprite() != NULL);
@ -259,6 +259,7 @@ void Document::prepareExtraCel(const gfx::Rect& bounds, int opacity)
m_extraCel->setPosition(bounds.getOrigin());
m_extraCel->setOpacity(opacity);
m_extraCel->setFrame(frame);
}
void Document::setExtraCelType(render::ExtraType type)

View File

@ -122,7 +122,7 @@ namespace app {
//////////////////////////////////////////////////////////////////////
// Extra Cel (it is used to draw pen preview, pixels in movement, etc.)
void prepareExtraCel(const gfx::Rect& bounds, int opacity);
void prepareExtraCel(const gfx::Rect& bounds, frame_t frame, int opacity);
void setExtraCelType(render::ExtraType type);
void destroyExtraCel();
Cel* getExtraCel() const;

View File

@ -155,7 +155,7 @@ void BrushPreview::show(const gfx::Point& screenPos)
if (cel) opacity = MUL_UN8(opacity, cel->opacity(), t);
if (layer) opacity = MUL_UN8(opacity, static_cast<LayerImage*>(layer)->opacity(), t);
document->prepareExtraCel(brushBounds, opacity);
document->prepareExtraCel(brushBounds, m_editor->frame(), opacity);
document->setExtraCelType(render::ExtraType::NONE);
document->setExtraCelBlendMode(
(layer ? static_cast<LayerImage*>(layer)->blendMode():

View File

@ -790,7 +790,7 @@ void Editor::flashCurrentLayer()
if (src_image) {
m_renderEngine.removePreviewImage();
m_document->prepareExtraCel(m_sprite->bounds(), 255);
m_document->prepareExtraCel(m_sprite->bounds(), m_frame, 255);
m_document->setExtraCelType(render::ExtraType::COMPOSITE);
Image* flash_image = m_document->getExtraCelImage();

View File

@ -596,7 +596,7 @@ void PixelsMovement::redrawExtraImage()
if (cel) opacity = MUL_UN8(opacity, cel->opacity(), t);
gfx::Rect bounds = m_currentData.transformedBounds();
m_document->prepareExtraCel(bounds, opacity);
m_document->prepareExtraCel(bounds, m_site.frame(), opacity);
m_document->setExtraCelType(render::ExtraType::PATCH);
m_document->setExtraCelBlendMode(
static_cast<LayerImage*>(m_layer)->blendMode());

View File

@ -692,6 +692,7 @@ void Render::renderLayer(
gfx::Rect extraArea;
bool drawExtra = (m_extraCel &&
m_extraCel->frame() == frame &&
m_extraImage &&
layer == m_currentLayer &&
frame == m_currentFrame &&