fix bbox handling
This commit is contained in:
parent
c8ec7ca76a
commit
73164b3b33
3 changed files with 20 additions and 3 deletions
|
@ -134,6 +134,11 @@ void Iwa_TileFx::transform(double frame, int port, const TRectD &rectOnOutput,
|
||||||
TRectD &rectOnInput, TRenderSettings &infoOnInput) {
|
TRectD &rectOnInput, TRenderSettings &infoOnInput) {
|
||||||
infoOnInput = infoOnOutput;
|
infoOnInput = infoOnOutput;
|
||||||
|
|
||||||
|
if (!m_input.isConnected()) {
|
||||||
|
rectOnInput.empty();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
TRectD inputBox;
|
TRectD inputBox;
|
||||||
m_input->getBBox(frame, inputBox, infoOnOutput);
|
m_input->getBBox(frame, inputBox, infoOnOutput);
|
||||||
|
|
||||||
|
@ -161,6 +166,8 @@ void Iwa_TileFx::transform(double frame, int port, const TRectD &rectOnOutput,
|
||||||
|
|
||||||
int Iwa_TileFx::getMemoryRequirement(const TRectD &rect, double frame,
|
int Iwa_TileFx::getMemoryRequirement(const TRectD &rect, double frame,
|
||||||
const TRenderSettings &info) {
|
const TRenderSettings &info) {
|
||||||
|
if (!m_input.isConnected()) return 0;
|
||||||
|
|
||||||
TRectD inputBox;
|
TRectD inputBox;
|
||||||
m_input->getBBox(frame, inputBox, info);
|
m_input->getBBox(frame, inputBox, info);
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,11 @@ void TileFx::transform(double frame, int port, const TRectD &rectOnOutput,
|
||||||
TRenderSettings &infoOnInput) {
|
TRenderSettings &infoOnInput) {
|
||||||
infoOnInput = infoOnOutput;
|
infoOnInput = infoOnOutput;
|
||||||
|
|
||||||
|
if (!m_input.isConnected()) {
|
||||||
|
rectOnInput.empty();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
TRectD inputBox;
|
TRectD inputBox;
|
||||||
m_input->getBBox(frame, inputBox, infoOnOutput);
|
m_input->getBBox(frame, inputBox, infoOnOutput);
|
||||||
|
|
||||||
|
@ -116,6 +121,8 @@ void TileFx::transform(double frame, int port, const TRectD &rectOnOutput,
|
||||||
|
|
||||||
int TileFx::getMemoryRequirement(const TRectD &rect, double frame,
|
int TileFx::getMemoryRequirement(const TRectD &rect, double frame,
|
||||||
const TRenderSettings &info) {
|
const TRenderSettings &info) {
|
||||||
|
if (!m_input.isConnected()) return 0;
|
||||||
|
|
||||||
TRectD inputBox;
|
TRectD inputBox;
|
||||||
m_input->getBBox(frame, inputBox, info);
|
m_input->getBBox(frame, inputBox, info);
|
||||||
|
|
||||||
|
@ -157,7 +164,7 @@ void TileFx::doCompute(TTile &tile, double frame, const TRenderSettings &ri) {
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
//! Make the tile of the image contained in \b inputTile in \b tile
|
//! Make the tile of the image contained in \b inputTile in \b tile
|
||||||
/*
|
/*
|
||||||
*/
|
*/
|
||||||
void TileFx::makeTile(const TTile &inputTile, const TTile &tile) const {
|
void TileFx::makeTile(const TTile &inputTile, const TTile &tile) const {
|
||||||
// Build the mirroring pattern. It obviously repeats itself out of 2x2 tile
|
// Build the mirroring pattern. It obviously repeats itself out of 2x2 tile
|
||||||
// blocks.
|
// blocks.
|
||||||
|
|
|
@ -541,8 +541,11 @@ TAffine TRasterFx::handledAffine(const TRenderSettings &info, double frame) {
|
||||||
bool TRasterFx::getBBox(double frame, TRectD &bBox,
|
bool TRasterFx::getBBox(double frame, TRectD &bBox,
|
||||||
const TRenderSettings &info) {
|
const TRenderSettings &info) {
|
||||||
bool ret = doGetBBox(frame, bBox, info);
|
bool ret = doGetBBox(frame, bBox, info);
|
||||||
|
if (!bBox.isEmpty()) { // TODO: check if bbox can always be empty when ret ==
|
||||||
|
// false
|
||||||
bBox = info.m_affine * bBox;
|
bBox = info.m_affine * bBox;
|
||||||
enlargeToI(bBox);
|
enlargeToI(bBox);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue