diff --git a/src/gui/BlockSliceView/ScalarFieldDisplayAdaptor.h b/src/gui/BlockSliceView/ScalarFieldDisplayAdaptor.h index 666a564985c6a4463b13ea60d57647838b823cce..da8c89f11d3a36c30174e800e389bf9879d99498 100644 --- a/src/gui/BlockSliceView/ScalarFieldDisplayAdaptor.h +++ b/src/gui/BlockSliceView/ScalarFieldDisplayAdaptor.h @@ -56,7 +56,6 @@ namespace gui { typedef typename field_t::value_type T; static const uint_t F_SIZE = field_t::F_SIZE; - static_assert( F_SIZE ==1, "Only Scalar fields can be displayed" ); void drawScalarFieldNumeric( CellView * cell, const typename field_t::const_iterator & it ); void drawScalarFieldColormap( CellView * cell, const typename field_t::const_iterator & it, T min, T max ); @@ -65,7 +64,7 @@ namespace gui { using FieldDisplayAdaptor<field_t>::field_; using FieldDisplayAdaptor<field_t>::sliceInterval_; using FieldDisplayAdaptor<field_t>::blockDataId_; - + cell_idx_t f; DisplayPropertiesItem * displayProperties_; }; diff --git a/src/gui/BlockSliceView/ScalarFieldDisplayAdaptor.impl.h b/src/gui/BlockSliceView/ScalarFieldDisplayAdaptor.impl.h index 93ea6418e1f568877beff8e72ce8029f6d6af73f..22dde7f8967d6cbe78e66082d860c6cdc1cbb337 100644 --- a/src/gui/BlockSliceView/ScalarFieldDisplayAdaptor.impl.h +++ b/src/gui/BlockSliceView/ScalarFieldDisplayAdaptor.impl.h @@ -37,6 +37,7 @@ namespace gui { template< typename field_t> ScalarFieldDisplayAdaptor<field_t>::ScalarFieldDisplayAdaptor( ConstBlockDataID scalarFieldID ) : FieldDisplayAdaptor<field_t>( scalarFieldID ), + f(0), displayProperties_ ( NULL ) { } @@ -67,7 +68,17 @@ void ScalarFieldDisplayAdaptor<field_t>::addConfigurationItem( QTreeWidgetItem * if ( ! displayProperties_ ) { QStringList options; - options << "Numeric" << "Color Map"; + + if( field_t::F_SIZE == 1) { + options << "Numeric" << "Color Map"; + } + else + { + for( uint_t i=0; i < field_t::F_SIZE; ++i ) { + options << QString("%1 Numeric").arg(i); + options << QString("%1 Color Map").arg(i); + } + } displayProperties_ = new DisplayPropertiesItem( options, parentItem ); displayProperties_->enableGradientSelect(); @@ -87,10 +98,11 @@ void ScalarFieldDisplayAdaptor<field_t>::draw( QVector<QVector<CellView*> > & gr return; // displayType is option index in the QStringList passed to the constructor of displayProperties - int displayType = displayProperties_->getComboBoxSelection(); + int comboSelection = displayProperties_->getComboBoxSelection(); + int displayType = comboSelection % 2; + f = comboSelection / 2; assert ( displayType >=0 && displayType <2 ); - T min = std::numeric_limits<T>::max(); T max = std::numeric_limits<T>::min(); if ( displayType == 1 ) @@ -117,26 +129,28 @@ void ScalarFieldDisplayAdaptor<field_t>::draw( QVector<QVector<CellView*> > & gr } template< typename field_t> -void ScalarFieldDisplayAdaptor<field_t>::drawScalarFieldNumeric( CellView * cell, const typename field_t::const_iterator & it ) +void ScalarFieldDisplayAdaptor<field_t>::drawScalarFieldNumeric( CellView * cell, + const typename field_t::const_iterator & it) { if( boost::is_same<T,float>::value || boost::is_same<T,double>::value ) - cell->setText( QString("%1").arg( real_c(*it), 0,'g',6) ); - else if ( *it < std::numeric_limits<T>::max() ) - cell->setText( QString("%1").arg(*it) ); + cell->setText(QString("%1").arg(real_c(it.getF(f)), 0, 'g', 6)); + else if ( it.getF(f) < std::numeric_limits<T>::max() ) + cell->setText( QString("%1").arg(it.getF(f)) ); else cell->setText(""); } template< typename field_t> -void ScalarFieldDisplayAdaptor<field_t>::drawScalarFieldColormap( CellView * cell, const typename field_t::const_iterator & it, - T min, T max ) +void ScalarFieldDisplayAdaptor<field_t>::drawScalarFieldColormap( CellView * cell, + const typename field_t::const_iterator & it, + T min, T max ) { real_t normVal = 0; if ( fabs( real_c(max) - real_c(min) ) > 1e-7 ) - normVal = real_c( *it - min ) / real_c(max-min); + normVal = real_c(it.getF(f) - min) / real_c(max - min); - if ( *it < std::numeric_limits<T>::max() ) + if ( it.getF(f) < std::numeric_limits<T>::max() ) cell->setBrush( displayProperties_->getColorFromColormap( normVal ) ); else cell->setBrush( QBrush(Qt::red) ); diff --git a/src/gui/Gui.cpp b/src/gui/Gui.cpp index 3a4f374128ed58a53f096514c200a6df3075dad6..d8c06a3cab1f58479b704b783dc333e17158437b 100644 --- a/src/gui/Gui.cpp +++ b/src/gui/Gui.cpp @@ -136,6 +136,14 @@ DisplayAdaptor * GUI::findDisplayAdaptorForBlockID ( ConstBlockDataID bdId ) con if ( block.isDataOfType< GhostLayerField<real_t,3> > ( bdId) ) return new ScalarField3DisplayAdaptor<GhostLayerField<real_t,3> > ( bdId ); + if ( block.isDataOfType< GhostLayerField<real_t,2> >( bdId) ) return new ScalarFieldDisplayAdaptor<GhostLayerField<real_t, 2> >( bdId ); + if ( block.isDataOfType< GhostLayerField<real_t,3> >( bdId) ) return new ScalarFieldDisplayAdaptor<GhostLayerField<real_t, 3> >( bdId ); + if ( block.isDataOfType< GhostLayerField<real_t,4> >( bdId) ) return new ScalarFieldDisplayAdaptor<GhostLayerField<real_t, 4> >( bdId ); + if ( block.isDataOfType< GhostLayerField<real_t,5> >( bdId) ) return new ScalarFieldDisplayAdaptor<GhostLayerField<real_t, 5> >( bdId ); + if ( block.isDataOfType< GhostLayerField<real_t,6> >( bdId) ) return new ScalarFieldDisplayAdaptor<GhostLayerField<real_t, 6> >( bdId ); + if ( block.isDataOfType< GhostLayerField<real_t,7> >( bdId) ) return new ScalarFieldDisplayAdaptor<GhostLayerField<real_t, 7> >( bdId ); + + // Fields if ( block.isDataOfType< Field<uint8_t ,1> >( bdId) ) return new ScalarFieldDisplayAdaptor<Field<uint8_t ,1> >( bdId ); if ( block.isDataOfType< Field<uint16_t,1> >( bdId) ) return new ScalarFieldDisplayAdaptor<Field<uint16_t,1> >( bdId );