mirror of
https://github.com/aseprite/aseprite.git
synced 2025-03-05 13:14:37 +00:00
Draw document's extra cel (brush preview) in the current frame only
This commit is contained in:
parent
436866c128
commit
1b930d4d42
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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():
|
||||
|
@ -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();
|
||||
|
@ -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());
|
||||
|
@ -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 &&
|
||||
|
Loading…
x
Reference in New Issue
Block a user