Skip to content

Commit 6a84136

Browse files
Exr Reader: fix and simplify display and data window computation
issue #238
1 parent f3190e3 commit 6a84136

File tree

1 file changed

+9
-15
lines changed

1 file changed

+9
-15
lines changed

plugins/image/io/Exr/src/reader/EXRReaderProcess.tcc

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -293,24 +293,18 @@ void EXRReaderProcess<View>::sliceCopy( Imf::InputFile& input, const Imf::Slice*
293293

294294
if( params._displayWindow )
295295
{
296-
size_t xoffsetData = abs( dispw.min.x );
297-
size_t yoffsetData = abs( dispw.min.y );
298-
size_t xoffsetDisp = abs( dataw.min.x );
299-
size_t yoffsetDisp = abs( dataw.min.y );
296+
size_t xoffsetData = dataw.min.x + std::max( 0, dispw.min.x );
297+
size_t yoffsetData = dataw.min.y + std::max( 0, dispw.min.y );
298+
size_t xoffsetDisp = dataw.min.x - std::min( 0, dispw.min.x );
299+
size_t yoffsetDisp = dataw.min.y - std::min( 0, dispw.min.y );
300300

301301
size_t wView = std::min( dataw.max.x, dispw.max.x ) - std::max( dataw.min.x, dispw.min.x ) + 1;
302302
size_t hView = std::min( dataw.max.y, dispw.max.y ) - std::max( dataw.min.y, dispw.min.y ) + 1;
303-
304-
if( dispw.min.x < 0 )
305-
{
306-
xoffsetData -= - dispw.min.x;
307-
xoffsetDisp += - dispw.min.x;
308-
}
309-
if( dispw.min.y < 0 )
310-
{
311-
yoffsetData -= - dispw.min.y;
312-
yoffsetDisp += - dispw.min.y;
313-
}
303+
304+
TUTTLE_TLOG_VAR4( TUTTLE_WARNING, dataw.min.x, dataw.min.y, dataw.max.x, dataw.max.y );
305+
TUTTLE_TLOG_VAR4( TUTTLE_WARNING, dispw.min.x, dispw.min.y, dispw.max.x, dispw.max.y );
306+
TUTTLE_TLOG_VAR4( TUTTLE_WARNING, xoffsetData, yoffsetData, xoffsetDisp, yoffsetDisp );
307+
TUTTLE_TLOG_VAR2( TUTTLE_WARNING, wView, hView );
314308

315309
subView = subimage_view( vw,
316310
xoffsetData,

0 commit comments

Comments
 (0)