@@ -83,7 +83,7 @@ NrrdData::NrrdData( DataBlockHandle data_block ) :
8383}
8484
8585
86- NrrdData::NrrdData ( DataBlockHandle data_block, GridTransform transform ) :
86+ NrrdData::NrrdData ( DataBlockHandle data_block, GridTransform transform, bool no_downgrade ) :
8787 private_ ( new NrrdDataPrivate )
8888{
8989 if ( !data_block )
@@ -102,7 +102,7 @@ NrrdData::NrrdData( DataBlockHandle data_block, GridTransform transform ) :
102102 data_block->get_nx (), data_block->get_ny (),
103103 data_block->get_nz () );
104104
105- set_transform ( transform );
105+ set_transform ( transform, no_downgrade );
106106 }
107107}
108108
@@ -264,7 +264,7 @@ GridTransform NrrdData::get_grid_transform() const
264264 return grid_transform;
265265}
266266
267- void NrrdData::set_transform ( GridTransform& transform )
267+ void NrrdData::set_transform ( GridTransform& transform, bool no_downgrade )
268268{
269269 if ( !this ->private_ ->nrrd_ ) return ;
270270
@@ -319,32 +319,39 @@ void NrrdData::set_transform( GridTransform& transform )
319319 if ( nrrd->spaceDim > 0 && nrrd->spaceDim == nrrd->dim )
320320 {
321321 bool is_aligned_nrrd = true ;
322- for ( size_t j = 0 ; j < static_cast < size_t >( nrrd-> spaceDim ); j++ )
322+ if ( no_downgrade )
323323 {
324- for ( size_t i = 0 ; i < static_cast <size_t >( nrrd->dim ); i++ )
324+ is_aligned_nrrd = false ;
325+ }
326+ else
327+ {
328+ for ( size_t j = 0 ; j < static_cast <size_t >( nrrd->spaceDim ); j++ )
325329 {
326- if ( (i != j) &&
327- ( (nrrd->axis [ i ].spaceDirection [ j ] != 0.0 ) &&
328- (! IsNan (nrrd->axis [ i ].spaceDirection [ j ])) ) )
330+ for ( size_t i = 0 ; i < static_cast <size_t >( nrrd->dim ); i++ )
329331 {
330- is_aligned_nrrd = false ;
332+ if ( (i != j) &&
333+ ( (nrrd->axis [ i ].spaceDirection [ j ] != 0.0 ) &&
334+ (! IsNan (nrrd->axis [ i ].spaceDirection [ j ])) ) )
335+ {
336+ is_aligned_nrrd = false ;
337+ }
331338 }
332339 }
333- }
334340
335- for ( size_t j = 0 ; j < static_cast <size_t >( nrrd->spaceDim ); j++ )
336- {
337- for ( size_t i = 0 ; i < static_cast <size_t >( nrrd->spaceDim ); i++ )
341+ for ( size_t j = 0 ; j < static_cast <size_t >( nrrd->spaceDim ); j++ )
338342 {
339- if ( (i != j) &&
340- ( (nrrd->measurementFrame [ i ][ j ] != 0.0 ) &&
341- (! IsNan ( nrrd->measurementFrame [ i ][ j ])) ) )
343+ for ( size_t i = 0 ; i < static_cast <size_t >( nrrd->spaceDim ); i++ )
342344 {
343- is_aligned_nrrd = false ;
345+ if ( (i != j) &&
346+ ( (nrrd->measurementFrame [ i ][ j ] != 0.0 ) &&
347+ (! IsNan ( nrrd->measurementFrame [ i ][ j ])) ) )
348+ {
349+ is_aligned_nrrd = false ;
350+ }
344351 }
345352 }
346353 }
347-
354+
348355 if ( is_aligned_nrrd )
349356 {
350357 // Down grade nrrd
0 commit comments