Fix savebox referenced fills
This commit is contained in:
parent
8dcd9f3250
commit
88618608a3
3 changed files with 12 additions and 3 deletions
|
@ -32,6 +32,8 @@ public:
|
||||||
bool m_prevailing;
|
bool m_prevailing;
|
||||||
bool m_fillOnlySavebox;
|
bool m_fillOnlySavebox;
|
||||||
bool m_referenced;
|
bool m_referenced;
|
||||||
|
TDimension m_imageSize;
|
||||||
|
TPoint m_imageOffset;
|
||||||
|
|
||||||
FillParameters()
|
FillParameters()
|
||||||
: m_styleId(0)
|
: m_styleId(0)
|
||||||
|
@ -58,7 +60,9 @@ public:
|
||||||
, m_palette(params.m_palette)
|
, m_palette(params.m_palette)
|
||||||
, m_prevailing(params.m_prevailing)
|
, m_prevailing(params.m_prevailing)
|
||||||
, m_fillOnlySavebox(params.m_fillOnlySavebox)
|
, 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) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
|
@ -1122,6 +1122,10 @@ void doFill(const TImageP &img, const TPointD &pos, FillParameters ¶ms,
|
||||||
ras = ti->getRaster()->extract(ibbox);
|
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;
|
bool recomputeSavebox = false;
|
||||||
TPalette *plt = ti->getPalette();
|
TPalette *plt = ti->getPalette();
|
||||||
|
|
||||||
|
|
|
@ -458,8 +458,9 @@ bool fill(const TRasterCM32P &r, const FillParameters ¶ms,
|
||||||
TCamera *camera = scene->getCurrentCamera();
|
TCamera *camera = scene->getCurrentCamera();
|
||||||
TRaster32P tmpRaster(camera->getRes());
|
TRaster32P tmpRaster(camera->getRes());
|
||||||
scene->renderFrame(tmpRaster, frameIndex);
|
scene->renderFrame(tmpRaster, frameIndex);
|
||||||
TPoint offset((refRaster->getLx() - tmpRaster->getLx()) / 2,
|
TPoint offset((params.m_imageSize.lx - tmpRaster->getLx()) / 2,
|
||||||
(refRaster->getLy() - tmpRaster->getLy()) / 2);
|
(params.m_imageSize.ly - tmpRaster->getLy()) / 2);
|
||||||
|
offset -= params.m_imageOffset;
|
||||||
refRaster->fill(color);
|
refRaster->fill(color);
|
||||||
refRaster->copy(tmpRaster, offset);
|
refRaster->copy(tmpRaster, offset);
|
||||||
refRaster->lock();
|
refRaster->lock();
|
||||||
|
|
Loading…
Reference in a new issue