ColorLayerImageViewPanel *clivp = (ColorLayerImageViewPanel*)bbGetOutputWidget();
- clivp->SetActive( bbGetInputActive() );
+ if (firsttime==true)
+ {
+ firsttime=false;
+ clivp->SetActive( bbGetInputActive() );
+ }
clivp->GetColorLayerImageViewManager()->SetwxVtkBaseView( 0 , bbGetInputWxVtkBaseView() );
clivp->GetColorLayerImageViewManager()->SetwxVtkBaseView( 1 , bbGetInputWxVtkBaseView1() );
clivp->GetColorLayerImageViewManager()->SetwxVtkBaseView( 2 , bbGetInputWxVtkBaseView2() );
-
+
std::vector<double> base_color = bbGetInputlstBaseColor();
clivp->GetColorLayerImageViewManager()->SetBaseColors( base_color );
std::vector<double> grey_level_boundaries = bbGetInputlstGreyLevelBoundaries();
clivp->GetColorLayerImageViewManager()->SetGreyLevelBoundaries( grey_level_boundaries );
+
+ std::vector<double> transparence_level_boundaries = bbGetInputlstTransparenceBoundaries();
+ clivp->GetColorLayerImageViewManager()->SetBaseTransparence( transparence_level_boundaries );
clivp->GetColorLayerImageViewManager()->SetPlainOrGradientColor( bbGetInputPlainOrGradientColor() );
clivp->SetFittingMode( bbGetInputFittingMode() );
//=====
void ColorLayerImageView::bbUserSetDefaultValues()
{
+ firsttime=true;
bbSetInputIn(NULL);
bbSetInputActive(true);
bbSetInputWxVtkBaseView(NULL);
BBTK_DECLARE_INPUT(WxVtkBaseView2,wxVtkBaseView *);
BBTK_DECLARE_INPUT(lstBaseColor,std::vector<double>);
BBTK_DECLARE_INPUT(lstGreyLevelBoundaries,std::vector<double>);
+ BBTK_DECLARE_INPUT(lstTransparenceBoundaries,std::vector<double>);
BBTK_DECLARE_INPUT(PlainOrGradientColor,bool);
BBTK_DECLARE_INPUT(FittingMode,int);
BBTK_PROCESS(Process);
BBTK_CREATE_WIDGET(CreateWidget);
void CreateWidget(wxWindow*);
+ bool firsttime;
+
//=====
// Don't edit this file. This file is generated from xml description..
//=====
BBTK_INPUT(ColorLayerImageView,WxVtkBaseView1," 1 creaMaracasVisuViewer viewer XY,YZ ou XZ",wxVtkBaseView*,"");
BBTK_INPUT(ColorLayerImageView,WxVtkBaseView2," 2 creaMaracasVisuViewer viewer XY,YZ ou XZ",wxVtkBaseView*,"");
BBTK_INPUT(ColorLayerImageView,lstBaseColor,"List of Base Colors in RGB format to define the color map. Requirement: must be of a size being a multiple of 3, with values between 0 and 1. For example, for 2 colors: \"1 0 0 0 0 1\". If not provided as required, the histogram is equally split into three areas, blue, yellow and red.",std::vector<double>,"");
+ BBTK_INPUT(ColorLayerImageView,lstTransparenceBoundaries,"Transparence vector. (The same size of color lst).",std::vector<double>,"");
+
BBTK_INPUT(ColorLayerImageView,lstGreyLevelBoundaries,"List of the Grey Level Boundaries to define the color map (grey level outside the color boundaries will not be disayed). Requirement: Must have one more element than the number of colours. For example, for 2 colors: \"50 150 250\". If not provided as required, the histogram is equally split into areas, which number corresponds to the number of colors provided (3 by default).",std::vector<double>,"");
+
+
BBTK_INPUT(ColorLayerImageView,PlainOrGradientColor,"Choose between Plain (true) or Gradient (false) colors. Default is false.",bool,"");
BBTK_INPUT(ColorLayerImageView,FittingMode,"Choose the fitting mode between the images, the transformation can be either by Dimension (1), by Spacing (2) or by Pixel (3). If you want to make the choice through a dialog box, choose (-1). Default is by Pixel (3).",int,"");
BBTK_END_DESCRIBE_BLACK_BOX(ColorLayerImageView);
std::cout << "CM ColorLayerImageView::SetBaseColors : ERROR!!! The base color vector has an inconsistent size. It must be of a size multiple of 3, different from 0, but its size is: "<< base_color.size() << ". Therefore, the default values will be used as base colors." << std::endl;
}
+
+//----------------------------------------------------------------------------
+void ColorLayerImageView::SetBaseTransparence(std::vector<double> & base_transparence)
+{
+ _transparence_level_boundary = base_transparence;
+}
+
+
//----------------------------------------------------------------------------
double ColorLayerImageView::GetBaseColors(unsigned int index)
{
}
// ------------------ End Of Setting Default Values
+ int iTransparence,transparenceSize = _transparence_level_boundary.size();
+ for (iTransparence= transparenceSize ; iTransparence < GetBaseColorNb(); iTransparence++ )
+ {
+ _transparence_level_boundary.push_back(1);
+ }
+
// ------------------ Defining the Threshold Table
vtkLookupTable* thresholdTable = GetThresholdTable();
double thresholdTable_range[2];
- double r1,r2,g1,g2,b1,b2;
+ double r1,r2,g1,g2,b1,b2,t1,t2;
int start,end;
// CM Number of table values consistent with the effective number of values (see loop below).
{
start = 0;
end = GrayLevel_TO_colorTableIndex( GetGreyLevelBoundaries(0) );
- FillColorTable(start,end, 0,0,0, 0,0,0);
+ FillColorTable(start,end, 0,0,0, 0,0,0, 0,0);
}
if ( maxRange>GetGreyLevelBoundaries( _grey_level_boundary.size()-1 ) )
{
start = GrayLevel_TO_colorTableIndex( GetGreyLevelBoundaries( _grey_level_boundary.size()-1 ) );
end = GrayLevel_TO_colorTableIndex( maxRange );
- FillColorTable(start,end, 0,0,0, 0,0,0);
+ FillColorTable(start,end, 0,0,0, 0,0,0, 0,0);
}
for (int iColor = 0; iColor < GetBaseColorNb(); iColor++)
b1 = GetBaseColors(iColor*3+2);
start = GrayLevel_TO_colorTableIndex( GetGreyLevelBoundaries(iColor) );
end = GrayLevel_TO_colorTableIndex( GetGreyLevelBoundaries(iColor+1) );
- FillColorTable(start,end, r1,g1,b1,r1,g1,b1);
+ t1 = _transparence_level_boundary[iColor];
+ t2 = _transparence_level_boundary[iColor+1];
+ FillColorTable(start,end, r1,g1,b1,r1,g1,b1,t1,t2);
} // for i
} // End Of if (_color_type)
r1 = 0;
g1 = 0;
b1 = 0;
+ r1 = GetBaseColors((iColor-1)*3+0);
+ g1 = GetBaseColors((iColor-1)*3+1);
+ b1 = GetBaseColors((iColor-1)*3+2);
} else {
r1 = GetBaseColors((iColor-1)*3+0);
g1 = GetBaseColors((iColor-1)*3+1);
b2 = GetBaseColors(iColor*3+2);
start = GrayLevel_TO_colorTableIndex( GetGreyLevelBoundaries(iColor) );
end = GrayLevel_TO_colorTableIndex( GetGreyLevelBoundaries(iColor+1) );
- FillColorTable( start,end, r1,g1,b1, r2,g2,b2 );
+ t1 = _transparence_level_boundary[iColor];
+ t2 = _transparence_level_boundary[iColor+1];
+ FillColorTable( start,end, r1,g1,b1, r2,g2,b2, t1,t1 );
}// for
} //if
} // End Of if (!_color_type)
}
//----------------------------------------------------------------------------
-void ColorLayerImageView::FillColorTable(int start, int end, double r1, double g1, double b1, double r2, double g2, double b2)
+void ColorLayerImageView::FillColorTable(int start, int end, double r1, double g1, double b1, double r2, double g2, double b2, double t1, double t2)
{
vtkLookupTable* thresholdTable = GetThresholdTable();
int iTable;
double dr = (r2-r1)/delta;
double dg = (g2-g1)/delta;
double db = (b2-b1)/delta;
+ double dt = (t2-t1)/delta;
for (iTable=0; iTable<=delta; iTable++)
{
- thresholdTable->SetTableValue( iTable+start , r1+dr*iTable, g1+dg*iTable, b1+db*iTable,1);
+ thresholdTable->SetTableValue( iTable+start , r1+dr*iTable, g1+dg*iTable, b1+db*iTable,t1+dt*iTable);
} // for iTable
- if (start==0) thresholdTable->SetTableValue( start , r1, g1, b1,0); // The first color in the table is transparent
+// if (start==0) thresholdTable->SetTableValue( start , r1, g1, b1,0); // The first color in the table is transparent
}
* \param base_color the base color vector.
*/
void SetBaseColors(std::vector<double> & base_color);
+
+
+ void SetBaseTransparence(std::vector<double> & base_transparence);
+
+
/**
* \brief Returns the base color for a given index (first coordinate of the first color being 1, second coordinate of the first color being 2, etc.).
*
int GetBaseColorNb();
- void FillColorTable(int start, int end, double r1, double g1, double b1, double r2, double g2, double b2);
+ void FillColorTable(int start, int end, double r1, double g1, double b1, double r2, double g2, double b2, double t1, double t2);
int GrayLevel_TO_colorTableIndex( double VALUE );
std::vector<double> _base_color;
//! Grey level boundaries.
std::vector<double> _grey_level_boundary;
+ //! Grey level boundaries.
+ std::vector<double> _transparence_level_boundary;
//! Color type (plain or gradient color).
bool _color_type;
} // for
}
+//----------------------------------------------------------------------------
+void ColorLayerImageViewManager::SetBaseTransparence(std::vector<double> & base_transparence)
+{
+ int i, size=_colorLayerImageViewLst.size();
+ for (i=0;i<size;i++)
+ {
+ if (_colorLayerImageViewLst[i]!=NULL)
+ {
+ _colorLayerImageViewLst[i]->SetBaseTransparence( base_transparence );
+ } // if
+ } // for
+}
+
+
+
//----------------------------------------------------------------------------
double ColorLayerImageViewManager::GetBaseColors(unsigned int index)
{
void SetBaseColors(std::vector<double> & base_color);
double GetBaseColors(unsigned int index);
void SetGreyLevelBoundaries(std::vector<double> & grey_level_boundary);
+ void SetBaseTransparence(std::vector<double> & base_transparence);
double GetGreyLevelBoundaries(unsigned int index);
void SetPlainOrGradientColor(bool color_type);
int GetBaseColorNb();
img->SetSpacing(spc);
} // spc !_spcBase dim!__dimBase
+ } // _firsttime_mode
- if (_active==true)
- {
- _colorLayerImageViewManager->onThreshold();
- RefreshView();
- }
-
+printf("EED ColorLayerImageViewPanel::SetImage\n");
+ if (_active==true)
+ {
+printf("EED ColorLayerImageViewPanel::SetImage _active=true \n");
+ _colorLayerImageViewManager->onThreshold();
+ RefreshView();
+ } // _ative
- }
}
void ColorLayerImageViewPanel::onThresholdShow(wxCommandEvent& event)
{
_thresholdGo = _cb_ShowHide->GetValue();
+ _active = _thresholdGo;
if (_thresholdGo)
{
_colorLayerImageViewManager->onThreshold();
//----------------------------------------------------------------------------
void ColorLayerImageViewPanel::onChangeOpacity(wxScrollEvent& event)
{
- int opacity = _opacity->GetValue();
- _colorLayerImageViewManager->onThresholdChangeOpacity(opacity);
+ int opacity = _opacity->GetValue();
+ _colorLayerImageViewManager->onThresholdChangeOpacity(opacity);
RefreshView();
}
//----------------------------------------------------------------------------
void LayerImageBase::onThreshold()
{
+printf("EED LayerImageBase::onThreshold Start \n");
+
if ((_image!=NULL) && (_baseView!=NULL))
{
+printf("EED LayerImageBase::onThreshold 1 \n");
double spc[3];
GetImage()-> GetSpacing(spc);
double x=GetX();
if (!GetActorPresent())
{
+printf("EED LayerImageBase::onThreshold 2 \n");
if (_thresholdTable==NULL)
{
//Lookup Table
_imageReslicer->SetInput( GetImage() );
_imageReslicer->SetInformationInput( GetImage() );
+printf("EED LayerImageBase::onThreshold directionViewer=%d\n", directionViewer );
+
if (directionViewer==0)
{
_imageReslicer->SetResliceAxesDirectionCosines( 0,0,1, 0,1,0, -1,0,0 );