From: davila Date: Thu, 29 Jan 2015 12:51:53 +0000 (+0100) Subject: #2520 creaMaracasVisu - Bug New Normal - Color Layer with double images X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=creaMaracasVisu.git;a=commitdiff_plain;h=412ca8c0300bc76e1a5e50a6de58840efc0d71b1 #2520 creaMaracasVisu - Bug New Normal - Color Layer with double images --- diff --git a/bbtk/src/bbcreaMaracasVisuPanelButtonContainer.cxx b/bbtk/src/bbcreaMaracasVisuPanelButtonContainer.cxx index 882d3d0..3386357 100644 --- a/bbtk/src/bbcreaMaracasVisuPanelButtonContainer.cxx +++ b/bbtk/src/bbcreaMaracasVisuPanelButtonContainer.cxx @@ -74,7 +74,7 @@ void PanelButtonContainer::CreateWidget( wxWindow* parent ) void PanelButtonContainer::bbUserSetDefaultValues( ) { - bbSetInputType("0"); + bbSetInputType(0); } //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageView.cxx index 515784a..50cafdd 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageView.cxx @@ -263,136 +263,152 @@ void ColorLayerImageView::SetDefaultBaseColorAndGreyLevelBoundary() //---------------------------------------------------------------------------- void ColorLayerImageView::ConfigLookupTable() // virtual { - // CM + // CM 2014 + // EED 28/01/2015 + // Grey level extrema retrieved from the image grey level extrema. - GetImage()->GetScalarRange(_range); - - + double minRange = _range[0]; + double maxRange = _range[1]; // ------------------ Setting Default Values // Checks the size consistency of vectors _base_color and _grey_level_boundary. // In case of inconsistency, an exception should be thrown. Instead, the default values are set. if (GetBaseColorNb() == 0) - SetDefaultBaseColorAndGreyLevelBoundary(); - - // If at least one color has been set, set the grey level boundaries to build an equipartition of the image grey levels, keeping the base colors defined. - else - if (GetBaseColorNb() != (_grey_level_boundary.size() - 1) ) + { + SetDefaultBaseColorAndGreyLevelBoundary(); + } + else { // If at least one color has been set, set the grey level boundaries to build an equipartition of the image grey levels, keeping the base colors defined. + if (GetBaseColorNb() != (_grey_level_boundary.size() - 1) ) { - std::cout << "CM ColorLayerImageView::ConfigLookupTable : ERROR!!! Inconsistency between the sizes of vectors _base_color and _grey_level_boundary. _base_color.size()/3 (=" <<_base_color.size()/3 << ") should be equal to _grey_level_boundary.size() - 1 (=" << _grey_level_boundary.size() - 1 << ")." << std::endl; - std::cout << "CM The default values for the base colors and the grey level boundaries will be set." << std::endl; - SetDefaultGreyLevelBoundary(); + std::cout << "CM ColorLayerImageView::ConfigLookupTable : ERROR!!! Inconsistency between the sizes of vectors _base_color and _grey_level_boundary. _base_color.size()/3 (=" <<_base_color.size()/3 << ") should be equal to _grey_level_boundary.size() - 1 (=" << _grey_level_boundary.size() - 1 << ")." << std::endl; + std::cout << "CM The default values for the base colors and the grey level boundaries will be set." << std::endl; + SetDefaultGreyLevelBoundary(); } + } // ------------------ End Of Setting Default Values - // ------------------ Defining the Threshold Table vtkLookupTable* thresholdTable = GetThresholdTable(); + double thresholdTable_range[2]; + double r1,r2,g1,g2,b1,b2; + int start,end; // CM Number of table values consistent with the effective number of values (see loop below). - double thresholdTable_range[2]; - thresholdTable_range[1]= std::max( GetGreyLevelBoundaries( GetBaseColorNb() ), ceil(_range[1]) ); - thresholdTable_range[0]= std::min( GetGreyLevelBoundaries(0), floor(_range[0]) ); - thresholdTable->SetNumberOfTableValues(thresholdTable_range[1] - thresholdTable_range[0] + 1); + thresholdTable_range[1]= std::max( GetGreyLevelBoundaries( _grey_level_boundary.size()-1 ) , ceil(_range[1]) ); + thresholdTable_range[0]= std::min( GetGreyLevelBoundaries(0) , floor(_range[0]) ); + thresholdTable->SetTableRange(thresholdTable_range); thresholdTable->SetAlphaRange(0, 1); thresholdTable->SetValueRange(0, 1); - thresholdTable->SetSaturationRange(0, 0); thresholdTable->SetRampToLinear( ); + thresholdTable->SetNumberOfTableValues(1000); + + // Defines the lookup table. // If the image has a degradation in one (or both) extremum (lower or higher), // sets the corresponding grey levels as transparent white in the lookup table. - for (int i = floor(_range[0]); i <= GetGreyLevelBoundaries(0); i++) - { - thresholdTable -> SetTableValue( i, 0, 0, 0, 0); - } - for (int i = GetGreyLevelBoundaries( GetBaseColorNb() ) + 1 ; i <= ceil(_range[1]); i++) - { - thresholdTable -> SetTableValue( i, 0, 0, 0, 0); - } - - int delta; // _color_type true, i.e. plain colors. // Sets the plain color for each grey level interval. if (_color_type) - { - for (int i = 0; i < GetBaseColorNb(); i++) - { - delta = GetGreyLevelBoundaries(i+1) - GetGreyLevelBoundaries(i); - for (int ii = 1; ii <= delta; ii++) - { - thresholdTable->SetTableValue(GetGreyLevelBoundaries(i) + ii, + { +// thresholdTable->SetNumberOfTableValues(thresholdTable_range[1] - thresholdTable_range[0] + 1); + + if ( minRangeGetGreyLevelBoundaries( _grey_level_boundary.size()-1 ) ) + { + start = 1000*(GetGreyLevelBoundaries( _grey_level_boundary.size()-1 )-minRange) / (maxRange-minRange);; + end = 1000*(maxRange-minRange) / (maxRange-minRange); + FillColorTable(start,end, 0,0,0, 0,0,0); + } + + int delta; + for (int iColor = 0; iColor < GetBaseColorNb(); iColor++) + { + + start = 1000*(GetGreyLevelBoundaries(iColor)-minRange) / (maxRange-minRange); + end = 1000*(GetGreyLevelBoundaries(iColor+1)-minRange) / (maxRange-minRange); + + r1 = GetBaseColors(iColor*3+0); + g1 = GetBaseColors(iColor*3+1); + b1 = GetBaseColors(iColor*3+2); + + FillColorTable(start,end, r1,g1,b1,r1,g1,b1); + +/* + delta = GetGreyLevelBoundaries(i+1) - GetGreyLevelBoundaries(i); + for (int ii = 1; ii <= delta; ii++) + { + thresholdTable->SetTableValue(GetGreyLevelBoundaries(i) + ii, GetBaseColors(i*3), GetBaseColors(i*3 + 1), GetBaseColors(i*3 + 2), 1); - } - } - } // End Of if (_color_type) + } // for ii +*/ + + } // for i + } // End Of if (_color_type) - // _color_type false, i.e. gradient color else - { - // First color: - // Creates a linear range from white to the first color. - delta = GetGreyLevelBoundaries(1) - GetGreyLevelBoundaries(0); - for (int ii = 1; ii <= delta ; ii++) - { - thresholdTable->SetTableValue( (GetGreyLevelBoundaries(0) + ii), GetBaseColors(0) * ii/delta, - GetBaseColors(1) * ii/delta, GetBaseColors(2) * ii/delta, 1); - } - - // If other colors exist: - // Creates linear ranges between one color and the following in the color vector. + { +//EED 28/01/2015 + thresholdTable->SetNumberOfTableValues(1000); if (GetBaseColorNb() > 1) - { - for (int i = 1; i < GetBaseColorNb(); i++) - { - delta = GetGreyLevelBoundaries(i+1) - GetGreyLevelBoundaries(i); - for (int ii = 1; ii <= delta; ii++) { - // Color computation : previous_color + (current_color - previous_color)/delta * ii - thresholdTable->SetTableValue((GetGreyLevelBoundaries(i) + ii), - GetBaseColors((i-1)*3) + (GetBaseColors(i*3) - GetBaseColors((i-1)*3)) / delta * ii , - GetBaseColors((i-1)*3 + 1) + (GetBaseColors(i*3 + 1) - GetBaseColors((i-1)*3 + 1)) / delta * ii , - GetBaseColors((i-1)*3 + 2) + (GetBaseColors(i*3 + 2) - GetBaseColors((i-1)*3 + 2)) / delta * ii , - 1); - } - } - } - } // End Of if (!_color_type) - - - - thresholdTable->SetRange(_range[0], _range[1]); // image intensity range - thresholdTable->SetValueRange(0.0, 1.0); // from black to white - + for (int iColor = 0; iColor < GetBaseColorNb(); iColor++) + { + if (iColor==0) + { + r1 = 0; + g1 = 0; + b1 = 0; + } else { + r1 = GetBaseColors((iColor-1)*3+0); + g1 = GetBaseColors((iColor-1)*3+1); + b1 = GetBaseColors((iColor-1)*3+2); + } // if iColor == 0 + + r2 = GetBaseColors(iColor*3+0); + g2 = GetBaseColors(iColor*3+1); + b2 = GetBaseColors(iColor*3+2); + start = 1000*(GetGreyLevelBoundaries(iColor)-minRange) / (maxRange-minRange); + end = 1000*(GetGreyLevelBoundaries(iColor+1)-minRange) / (maxRange-minRange); + FillColorTable(start,end, r1,g1,b1,r2,g2,b2); + }// for + } //if + } // End Of if (!_color_type) thresholdTable->Build( ); + //EO CM EED +} -/* -// Create a greyscale lookup table +void ColorLayerImageView::FillColorTable(int start, int end, double r1, double g1, double b1, double r2, double g2, double b2) +{ vtkLookupTable* thresholdTable = GetThresholdTable(); - thresholdTable->SetRange(0.5, 0.75); // image intensity range - thresholdTable->SetValueRange(0.0, 1); // from black to white - thresholdTable->SetHueRange(0.0, 1.0); // from black to white - thresholdTable->SetSaturationRange(0.0, 1.0); // no color saturation - thresholdTable->SetRampToLinear(); - thresholdTable->Build(); -*/ - - // ------------------ End Of Defining the Threshold Table - - //EO CM + int iTable; + double delta = end-start; + double dr = (r2-r1)/delta; + double dg = (g2-g1)/delta; + double db = (b2-b1)/delta; + for (iTable=0; iTable<=delta; iTable++) + { + thresholdTable->SetTableValue( iTable+start , r1+dr*iTable, g1+dg*iTable, b1+db*iTable,1); + } // for iTable } // EOF diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageView.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageView.h index e9adb4f..6d18f93 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageView.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageView.h @@ -91,6 +91,10 @@ class ColorLayerImageView : public LayerImageBase */ int GetBaseColorNb(); + + void FillColorTable(int start, int end, double r1, double g1, double b1, double r2, double g2, double b2); + + private: int _x2, _y2, _z2; diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewPanel.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewPanel.cxx index ffabba1..1477a0c 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewPanel.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/ThresholdImageView/ColorLayerImageViewPanel.cxx @@ -189,26 +189,14 @@ ColorLayerImageViewPanel::~ColorLayerImageViewPanel() } -//EED01 -//EED01 //---------------------------------------------------------------------------- -//EED01 void ColorLayerImageViewPanel::SetColorLayerImageView(ColorLayerImageView* colorLayerImageView) -//EED01 { -//EED01 _colorLayerImageView = colorLayerImageView; -//EED01 } -//EED01 -//EED01 //---------------------------------------------------------------------------- -//EED01 ColorLayerImageView* ColorLayerImageViewPanel::GetColorLayerImageView() -//EED01 { -//EED01 return _colorLayerImageView; -//EED01 } - - +//---------------------------------------------------------------------------- ColorLayerImageViewManager* ColorLayerImageViewPanel::GetColorLayerImageViewManager() { return _colorLayerImageViewManager; } +//---------------------------------------------------------------------------- // This is the new spacing of the background image (1,1,1) void ColorLayerImageViewPanel::SetBaseSpacing(double spc[3]) { @@ -221,6 +209,7 @@ void ColorLayerImageViewPanel::SetBaseSpacing(double spc[3]) _spcBase[2] = 1; } +//---------------------------------------------------------------------------- // This is the Original spacing of the background image void ColorLayerImageViewPanel::SetOriginalSpacing(double spc[3]) { @@ -229,6 +218,7 @@ void ColorLayerImageViewPanel::SetOriginalSpacing(double spc[3]) _spcOrg[2] = spc[2]; } +//---------------------------------------------------------------------------- // This is the size in pixels of the background image void ColorLayerImageViewPanel::SetBaseDimension(int dim[3]) { @@ -420,14 +410,10 @@ void ColorLayerImageViewPanel::onThresholdInterpolation(wxCommandEvent& event) //---------------------------------------------------------------------------- void ColorLayerImageViewPanel::onSliceFixDinamic(wxCommandEvent& event) { -//EED01 if (_colorLayerImageView!=NULL) -//EED01 { bool fixdin = _cb_SliceFixDinamic->GetValue(); -//EED01 _colorLayerImageView->SetSliceFixDynamic( fixdin ); _colorLayerImageViewManager->SetSliceFixDynamic( fixdin ); if (fixdin==false) { -//EED01 _colorLayerImageView->SetZ2( _sl_SliceImage->GetValue() ); _colorLayerImageViewManager->SetX2( _sl_SliceImageX->GetValue() ); _colorLayerImageViewManager->SetY2( _sl_SliceImageY->GetValue() ); _colorLayerImageViewManager->SetZ2( _sl_SliceImageZ->GetValue() ); @@ -435,38 +421,26 @@ void ColorLayerImageViewPanel::onSliceFixDinamic(wxCommandEvent& event) _sl_SliceImageX->Enable(!fixdin); _sl_SliceImageY->Enable(!fixdin); _sl_SliceImageZ->Enable(!fixdin); -//EED01 _colorLayerImageView->onThreshold(); _colorLayerImageViewManager->onThreshold(); RefreshView(); -//EED01 }//_colorLayerImageView } //---------------------------------------------------------------------------- void ColorLayerImageViewPanel::onSliceImage(wxScrollEvent& event) { -//EED01 if (_colorLayerImageView!=NULL) -//EED01 { -//EED01 _colorLayerImageView->SetZ2( _sl_SliceImage->GetValue() ); -//EED01 _colorLayerImageView->onThreshold(); -//EED01 RefreshView(); - _colorLayerImageViewManager->SetX2( _sl_SliceImageX->GetValue() ); - _colorLayerImageViewManager->SetY2( _sl_SliceImageY->GetValue() ); - _colorLayerImageViewManager->SetZ2( _sl_SliceImageZ->GetValue() ); - _colorLayerImageViewManager->onThreshold(); + _colorLayerImageViewManager->SetX2( _sl_SliceImageX->GetValue() ); + _colorLayerImageViewManager->SetY2( _sl_SliceImageY->GetValue() ); + _colorLayerImageViewManager->SetZ2( _sl_SliceImageZ->GetValue() ); + _colorLayerImageViewManager->onThreshold(); RefreshView(); -//EED01 }//_colorLayerImageView } //---------------------------------------------------------------------------- void ColorLayerImageViewPanel::onChangeOpacity(wxScrollEvent& event) { -//EED01 if (_colorLayerImageView!=NULL) -//EED01 { int opacity = _opacity->GetValue(); -//EED01 _colorLayerImageView->onThresholdChangeOpacity(opacity); _colorLayerImageViewManager->onThresholdChangeOpacity(opacity); RefreshView(); -//EED01 }//_colorLayerImageView } diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.h b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.h index 2302977..1d17c2a 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.h +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaButtonContainer/model/containerSettings.h @@ -155,7 +155,7 @@ namespace creaButtonContainer AddButtons( BCStructVectorType infoList ); // ---------------------------------------------------------------------------------- - AddItems( BCStructVectorType infoList );*/ +// AddItems( BCStructVectorType infoList ); // ---------------------------------------------------------------------------------- // ---------------------------------------------------------------------------------- diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx index e93c87a..721e82f 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/buttonContainerSettings.cxx @@ -91,6 +91,7 @@ namespace creaPanelButtonContainer }//hctac return ( NULL ); } +/* // ---------------------------------------------------------------------------------- ButtonContainerSettings::PanelButton ButtonContainerSettings::GetPanelList( const StringType &buttonName ) @@ -118,7 +119,7 @@ namespace creaPanelButtonContainer return (NULL); } - +*/ // ---------------------------------------------------------------------------------- ButtonContainerSettings::ButtonGroupSettings* @@ -269,8 +270,8 @@ namespace creaPanelButtonContainer { if( type == 0 ) this->AddButton( *it ); - else if( type == 1 ) - this->AddItems(*it); +// else if( type == 1 ) +// this->AddItems(*it); }//rof }//yrt catch ( std::exception& e ) @@ -324,22 +325,6 @@ namespace creaPanelButtonContainer }//hctac } */ -======= - std::cerr - << "ButtonContainerSettings::AddButton( BCPSettingsStruct* info )" - << "exception: " << e.what( ) << std::endl; - exit( 1 ); - }//hctac - } - - ButtonContainerSettings::ItemsMap - ButtonContainerSettings::GetItemsMap() - { - std::cout<< "MLER | ButtonContainerSettings:: GetItemsMap()" << std::endl; - return m_itemsMap; - } - ->>>>>>> b8c5a565c70ac0def1f21518afa2d847a9582d79 // ---------------------------------------------------------------------------------- }//ecapseman diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx index 7139fd1..f65c76c 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/creaPanelButtonContainer/creaPanelButtonContainer.cxx @@ -68,11 +68,11 @@ namespace creaPanelButtonContainer std::cout << "tipo 0; new ButtonContainerPanel"<m_ButtonContainerPanel = new ButtonContainerPanel( this, this->m_ButtonContainerSettings->GetButtonGroupSettings( functor ),type ); } - else if( type == 1) - { - std::cout << "tipo 1; new LIstWx"<mylist = new ListWx(this->m_ListPanel, -1,this->m_ButtonContainerSettings->GetItemsMap(), lFunctor); - }//MLER +// else if( type == 1) +// { +// std::cout << "tipo 1; new LIstWx"<mylist = new ListWx(this->m_ListPanel, -1,this->m_ButtonContainerSettings->GetItemsMap(), lFunctor); +// }//MLER //Using AuiManager to Manage the Panels @@ -136,6 +136,7 @@ namespace creaPanelButtonContainer } // ---------------------------------------------------------------------------------- +/* void PanelButtonContainer::UpdateListPanel( const std::string &buttonName ) { @@ -166,7 +167,7 @@ namespace creaPanelButtonContainer exit( 1 ); }//hctac } - +*/ void PanelButtonContainer::GenericListEvent( const std::string &buttonName ) {