mirror of
https://github.com/aseprite/aseprite.git
synced 2025-04-18 11:42:47 +00:00
Fix bug mixing image buffers in ExpandCelCanvas for new cels
Bug introduced from commit 48864b440b82a710076a8af66d98c95343407e40
This commit is contained in:
parent
bcab165700
commit
7b09aefe6a
@ -42,23 +42,20 @@
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
static raster::ImageBufferPtr cel_buffer;
|
|
||||||
static raster::ImageBufferPtr src_buffer;
|
static raster::ImageBufferPtr src_buffer;
|
||||||
static raster::ImageBufferPtr dst_buffer;
|
static raster::ImageBufferPtr dst_buffer;
|
||||||
|
|
||||||
static void destroy_buffers()
|
static void destroy_buffers()
|
||||||
{
|
{
|
||||||
cel_buffer.reset(NULL);
|
|
||||||
src_buffer.reset(NULL);
|
src_buffer.reset(NULL);
|
||||||
dst_buffer.reset(NULL);
|
dst_buffer.reset(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void create_buffers()
|
static void create_buffers()
|
||||||
{
|
{
|
||||||
if (!cel_buffer) {
|
if (!src_buffer) {
|
||||||
app::App::instance()->Exit.connect(&destroy_buffers);
|
app::App::instance()->Exit.connect(&destroy_buffers);
|
||||||
|
|
||||||
cel_buffer.reset(new raster::ImageBuffer(1));
|
|
||||||
src_buffer.reset(new raster::ImageBuffer(1));
|
src_buffer.reset(new raster::ImageBuffer(1));
|
||||||
dst_buffer.reset(new raster::ImageBuffer(1));
|
dst_buffer.reset(new raster::ImageBuffer(1));
|
||||||
}
|
}
|
||||||
@ -93,7 +90,7 @@ ExpandCelCanvas::ExpandCelCanvas(Context* context, TiledMode tiledMode, UndoTran
|
|||||||
if (m_cel == NULL) {
|
if (m_cel == NULL) {
|
||||||
// Create the image
|
// Create the image
|
||||||
m_celImage = Image::create(m_sprite->getPixelFormat(), m_sprite->getWidth(),
|
m_celImage = Image::create(m_sprite->getPixelFormat(), m_sprite->getWidth(),
|
||||||
m_sprite->getHeight(), cel_buffer);
|
m_sprite->getHeight());
|
||||||
clear_image(m_celImage, m_sprite->getTransparentColor());
|
clear_image(m_celImage, m_sprite->getTransparentColor());
|
||||||
|
|
||||||
// Create the cel
|
// Create the cel
|
||||||
@ -124,13 +121,12 @@ ExpandCelCanvas::ExpandCelCanvas(Context* context, TiledMode tiledMode, UndoTran
|
|||||||
|
|
||||||
// create two copies of the image region which we'll modify with the tool
|
// create two copies of the image region which we'll modify with the tool
|
||||||
m_srcImage = crop_image(m_celImage,
|
m_srcImage = crop_image(m_celImage,
|
||||||
x1-m_cel->getX(),
|
x1-m_cel->getX(),
|
||||||
y1-m_cel->getY(), x2-x1, y2-y1,
|
y1-m_cel->getY(), x2-x1, y2-y1,
|
||||||
m_sprite->getTransparentColor(),
|
m_sprite->getTransparentColor(),
|
||||||
src_buffer);
|
src_buffer);
|
||||||
|
|
||||||
m_dstImage = Image::createCopy(m_srcImage,
|
m_dstImage = Image::createCopy(m_srcImage, dst_buffer);
|
||||||
dst_buffer);
|
|
||||||
|
|
||||||
// We have to adjust the cel position to match the m_dstImage
|
// We have to adjust the cel position to match the m_dstImage
|
||||||
// position (the new m_dstImage will be used in RenderEngine to
|
// position (the new m_dstImage will be used in RenderEngine to
|
||||||
|
Loading…
x
Reference in New Issue
Block a user