diff --git a/toonz/sources/include/toonz/fill.h b/toonz/sources/include/toonz/fill.h index 38f5b389..fd02ccd1 100644 --- a/toonz/sources/include/toonz/fill.h +++ b/toonz/sources/include/toonz/fill.h @@ -32,6 +32,8 @@ public: bool m_prevailing; bool m_fillOnlySavebox; bool m_referenced; + TDimension m_imageSize; + TPoint m_imageOffset; FillParameters() : m_styleId(0) @@ -58,7 +60,9 @@ public: , m_palette(params.m_palette) , m_prevailing(params.m_prevailing) , m_fillOnlySavebox(params.m_fillOnlySavebox) - , m_referenced(params.m_referenced) {} + , m_referenced(params.m_referenced) + , m_imageSize(params.m_imageSize) + , m_imageOffset(params.m_imageOffset) {} }; //============================================================================= diff --git a/toonz/sources/tnztools/filltool.cpp b/toonz/sources/tnztools/filltool.cpp index 12e043b5..8bd24d72 100644 --- a/toonz/sources/tnztools/filltool.cpp +++ b/toonz/sources/tnztools/filltool.cpp @@ -1122,6 +1122,10 @@ void doFill(const TImageP &img, const TPointD &pos, FillParameters ¶ms, ras = ti->getRaster()->extract(ibbox); } + // Save image dimension in case we are working in a savebox and need it + params.m_imageSize = ti->getSize(); + params.m_imageOffset = offs; + bool recomputeSavebox = false; TPalette *plt = ti->getPalette(); diff --git a/toonz/sources/toonzlib/fill.cpp b/toonz/sources/toonzlib/fill.cpp index 7e5e43bf..0ce884e9 100644 --- a/toonz/sources/toonzlib/fill.cpp +++ b/toonz/sources/toonzlib/fill.cpp @@ -458,8 +458,9 @@ bool fill(const TRasterCM32P &r, const FillParameters ¶ms, TCamera *camera = scene->getCurrentCamera(); TRaster32P tmpRaster(camera->getRes()); scene->renderFrame(tmpRaster, frameIndex); - TPoint offset((refRaster->getLx() - tmpRaster->getLx()) / 2, - (refRaster->getLy() - tmpRaster->getLy()) / 2); + TPoint offset((params.m_imageSize.lx - tmpRaster->getLx()) / 2, + (params.m_imageSize.ly - tmpRaster->getLy()) / 2); + offset -= params.m_imageOffset; refRaster->fill(color); refRaster->copy(tmpRaster, offset); refRaster->lock();