// m_notebook_style =wxAUI_NB_TAB_SPLIT | wxAUI_NB_TAB_EXTERNAL_MOVE | wxNO_BORDER;
// m_notebook_theme = 0;
//wxContour_ActionCommandsID a;
-
+
+ _contourextractdata = NULL;
}
wxContourMainFrame :: wxContourMainFrame(wxWindow* parent, wxWindowID id,const wxString& title,const wxPoint& pos,const wxSize& size,std::vector<vtkImageData*> images, long style,std::string datadir)
if(images.size() > 0)
{
- _images = images;
this->setVectImages(images);
}
-
+
+ _contourextractdata = NULL;
}
void wxContourMainFrame::setVectImages(std::vector<vtkImageData*> imgs)
{
+ _images = imgs;
+
#if defined(__GNUC__)
std::string str_home(getenv("HOME"));
#elif defined(_WIN32)
wxContourMainFrame :: ~wxContourMainFrame()
{
+ delete _contourextractdata;
deleteAllContours();
_pannew->Close();
interfMainPanel::resetInstance();
_instantPanel->setConceptValue(name, value);
}
+
ConceptDataWrap* wxContourMainFrame::getLastConceptData(){
return _instantPanel->getLastConceptData();
}
+
+
bool wxContourMainFrame::getIfConceptCheckedAt( std::string name, int pos ){
return _instantPanel->getIfConceptCheckedAt( name, pos );
}
+
+
+void wxContourMainFrame::ShowResultImages(int typeContourGroup)
+{
+ vtkImageData * mask;
+ vtkImageData * value;
+ this->getMaskValue(&mask, &value, typeContourGroup);
+
+ std::vector<int> nTypeView;
+ nTypeView.push_back(5);
+ nTypeView.push_back(1);
+ nTypeView.push_back(2);
+ nTypeView.push_back(0);
+
+ wxFrame *frame = new wxFrame(this, -1,_T("Result image extracted.."),wxDefaultPosition,wxSize(600,600), wxDEFAULT_FRAME_STYLE|wxSTAY_ON_TOP);
+ wxAuiManager *m_mgr_noteBookViewerResult = new wxAuiManager();
+ m_mgr_noteBookViewerResult->SetManagedWindow(frame);
+
+ wxAuiNotebook* noteBookViewerResult = new wxAuiNotebook(frame, -1, wxPoint(600, 600), wxSize(430,200), m_notebook_style);
+ m_mgr_noteBookViewerResult->AddPane(noteBookViewerResult, wxAuiPaneInfo().Name(wxT("notebook_content")).CenterPane().PaneBorder(false));
+
+ wxPanel *panelViewer1 = new wxMaracas_N_ViewersWidget(noteBookViewerResult, value,&nTypeView);
+ wxPanel *panelViewer2 = new wxMaracas_N_ViewersWidget(noteBookViewerResult, mask,&nTypeView);
+
+
+ noteBookViewerResult->AddPage( panelViewer1, wxT("Image result") );
+ noteBookViewerResult->AddPage( panelViewer2, wxT("Mask result") );
+ m_mgr_noteBookViewerResult->Update();
+ frame->Show();
+}
+
+
+
+
void wxContourMainFrame::changeInstant()
{
std::vector<int> instantVect;
}
+
void wxContourMainFrame :: updateInstantOutlines()
{
_theViewPanel->removeSceneContours();
fscanf(pFile,"%s",tmp); // Version
fscanf(pFile,"%s",tmp); // 1.0.2 || 1.0.1 || 1.0.0
- std::string version(tmp);
deleteAllContours();
- //AD:02-06-09
- if (version=="1.0.2")
- {
- loadContours(pFile);
- }
-
- //AD:02-06-09
- else if (version=="1.0.1")
- {
- loadContours(pFile);
- }
-
- //AD:02-06-09
- else if (version=="1.0.0")
- {
- loadContours(pFile);
- }
+ loadContours(pFile, false);
+ loadContours(pFile, true);
fclose(pFile);
}
-void wxContourMainFrame ::loadContours( FILE *pFile )
+void wxContourMainFrame ::loadContours( FILE *pFile, bool staticContour )
{
char tmp[255];
- fscanf(pFile,"%s",tmp); // NumberOfContours
- fscanf(pFile,"%s",tmp); // ##
- int numberOfContours = atoi(tmp);
- std::vector<int> instantVector;
- int typeContourModel;
- manualContourModel *manModelContour;
- int typeView;
-
fscanf(pFile,"%s",tmp); // ImageDimensions
fscanf(pFile,"%s",tmp); // X
fscanf(pFile,"%s",tmp); // Y
fscanf(pFile,"%s",tmp); // X
fscanf(pFile,"%s",tmp); // Y
fscanf(pFile,"%s",tmp); // Z
+
+ fscanf(pFile,"%s",tmp); // NumberOfContours
+ fscanf(pFile,"%s",tmp); // ##
+ int numberOfContours = atoi(tmp);
+
+ std::vector<int> instantVector;
+ int typeContourModel;
+ manualContourModel *manModelContour;
+ int typeView;
int i;
for (i=0;i<numberOfContours;i++)
//_theViewPanel->getSceneManager()->setControlActiveStateOfALL( false );//This call is being done here because if the ROI is created underneath the previously created ROIS will still be active.
_theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ;
}
+
+ if (staticContour==true)
+ {
+ Instant instant(&instantVector);
+ kernelManager->changeContourOfManager( theName , &instant );
+ }
}// for numberOfContours
}
//AD:02-06-09
if (version=="1.0.2")
{
- openContours(pFile,2);
+ openContours(pFile,2,false);
+ openContours(pFile,2,true); //Load StaticContours
}
//AD:02-06-09
else if (version=="1.0.1")
{
- openContours(pFile,1);
+ openContours(pFile,1,false); //Skips ImageDimensions and ImageSpacing
+ openContours(pFile,1,true); //Load StaticContours, skips ImageDimensions and ImageSpacing
}
//AD:02-06-09
else if (version=="1.0.0")
{
- openContours(pFile,0);
+ openContours(pFile,1,false); //Skips ImageDimensions and ImageSpacing
}
fclose(pFile);
fprintf(pFile,"--CreaContour--\n");
fprintf(pFile,"Version %s\n", "1.0.2" );
-
- // Normal Contours
- lstNameThings = kernelManager->GetLstNameThings();
- sizeLstNameThings = lstNameThings.size();
- fprintf(pFile,"NumberOfContours %d\n", sizeLstNameThings );
-
+
vtkImageData *image = _images[0];
int dimRange[3];
fprintf(pFile,"ImageSpacing %f %f %f\n", spaRange[0], spaRange[1], spaRange[2] );
+ // Normal Contours
+
+ lstNameThings = kernelManager->GetLstNameThings();
+ sizeLstNameThings = lstNameThings.size();
+ fprintf(pFile,"NumberOfContours %d\n", sizeLstNameThings );
+
for (i=0 ; i<sizeLstNameThings ; i++)
{
kernelManager->SaveThingName( pFile, lstNameThings[i] );
_theViewPanel->getSceneManager()->SaveThingName( pFile, lstNameThings[i] );
}// for i
- //-- Contours Statics
+ //-- Static Contours
+
+ fprintf(pFile,"ImageDimensions %d %d %d\n", dimRange[0], dimRange[1], dimRange[2] );
+
+ fprintf(pFile,"ImageSpacing %f %f %f\n", spaRange[0], spaRange[1], spaRange[2] );
+
lstNameThings = kernelManager->GetLstNameThingsStatic();
sizeLstNameThings = lstNameThings.size();
fprintf(pFile,"NumberOfContoursStatic %d\n", sizeLstNameThings );
}
//AD:04-06-09
-void wxContourMainFrame::openContours( FILE *pFile, int version )
+void wxContourMainFrame::openContours( FILE *pFile, int version, bool staticContour )
{
char tmp[255];
- fscanf(pFile,"%s",tmp); // NumberOfContours
- fscanf(pFile,"%s",tmp); // ##
- int numberOfContours = atoi(tmp);
-
- std::vector<int> instantVector;
- int typeContourModel;
- manualContourModel *manModelContour;
- int typeView;
-
+
vtkImageData *image = _images[0];
int imageDim[3];
double imageSpac[3];
fscanf(pFile,"%s",tmp); // Z
tempSpac[2] = atof(tmp);
- //Compare Spacing and Dims in X and Y (Necessary in Z?) - Just for Version 3
+ //Compare Spacing and Dims in X and Y (Necessary in Z?) - Just for Version 2
if (imageDim[0]!=tempDim[0] || imageDim[1]!=tempDim[1] || imageSpac[0]!=tempSpac[0] || imageSpac[1]!=tempSpac[1])
{
compatible = false;
}
}
+
+ fscanf(pFile,"%s",tmp); // NumberOfContours
+ fscanf(pFile,"%s",tmp); // ##
+ int numberOfContours = atoi(tmp);
+
+ std::vector<int> instantVector;
+ int typeContourModel;
+ manualContourModel *manModelContour;
+ int typeView;
if (compatible==true)
{
_theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ;
}
- if (version==0) //StaticContours (will appear in all slices)
+ if (staticContour) //StaticContours (will appear in all slices)
{
Instant instant(&instantVector);
kernelManager->changeContourOfManager( theName , &instant );
if (dial->GetReturnCode() == wxID_OK)
{
- int typeOfTransformation = radioOpts->GetSelection();
+ typeOfTransformation = radioOpts->GetSelection();
transform = true;
-
}
int i;
manModelContour = kernelManager->factoryManualContourModel(typeContourModel);
manModelContour->Open(pFile);
-
- if (transform)
+
+ if (transform==true)
{
if (typeOfTransformation==0)
{
double transX, transY;
transX = (double) imageDim[0]/tempDim[0];
transY = (double) imageDim[1]/tempDim[1];
-
manModelContour->Transform_Ax_Plus_B(transX,0,transY,0);
}
-
else if (typeOfTransformation==1)
{
double transX, transY;
transX = (double) tempSpac[0]/imageSpac[0];
transY = (double) tempSpac[1]/imageSpac[1];
-
manModelContour->Transform_Ax_Plus_B(transX,0,transY,0);
}
}
_theViewPanel->getSceneManager()->configureViewControlTo( theName, manModelContour,spc , typeView) ;
}
- if (version==0) //StaticContours (will appear in all slices)
+ if (staticContour) //StaticContours (will appear in all slices)
{
Instant instant(&instantVector);
kernelManager->changeContourOfManager( theName , &instant );
return kernelManager->getOutlinesNameAtInstant(tempVector);
}
+
+void wxContourMainFrame::GenerateContourExtractData()
+{
+ if (_contourextractdata==NULL) { _contourextractdata = new ContourExtractData(true); }
+}
+
+
void wxContourMainFrame::onInformationContourLabels(int typeContourGroup,int selection,int minimumZ,int maximumZ)
{
+ GenerateContourExtractData();
+
int maxContourGroup = 0;
- ContourExtractData *contourextractdata = new ContourExtractData();
- contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
+ _contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
std::vector<manualContourModel*> lstManConMod;
std::vector<manualContourModel*> lstManConModTmp;
totalZ = maxZ-minZ+1;
- contourextractdata->SetImage( imagedata);
+ _contourextractdata->SetImage( imagedata);
// For each slice..
for ( z=minZ ; z<=maxZ ; z++ )
//_staticTextInformation->SetLabel(tmpString);
//Extraction data from contours of each slice
- contourextractdata->SetZtoBeAnalys(z);
+ _contourextractdata->SetZtoBeAnalys(z);
tempVector[1]=z;
Instant instant(&tempVector);
lstManConModTmp = lstManConModExp;
}
- contourextractdata->SetLstManualContourModel( lstManConModTmp );
+ _contourextractdata->SetLstManualContourModel( lstManConModTmp );
pLstValue.clear();
pLstValuePosX.clear();
pLstValuePosY.clear();
pLstValuePosZ.clear();
- contourextractdata->GetValuesInsideCrown( &pLstValue,
+ _contourextractdata->GetValuesInsideCrown( &pLstValue,
&pLstValuePosX,
&pLstValuePosY,
&pLstValuePosZ);
// Statistics of each slice.
- contourextractdata->Statistics( &pLstValue,
+ _contourextractdata->Statistics( &pLstValue,
minimumZ,
maximumZ,
&resultGrayRangeCount,
}
interfMainPanel::getInstance()->setStringInfoPanel( _T("") );
- delete contourextractdata;
}
//AD: 29-05-09
void wxContourMainFrame::SaveValuesXYZ(std::string directory,std::string namefile,int typeContourGroup)
{
wxBusyCursor wait;
- ContourExtractData *contourextractdata = new ContourExtractData();
+ GenerateContourExtractData();
+
//int typeContourGroup = this->_radiolstboxContourGroup->GetSelection();
- contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
+ _contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
std::vector<manualContourModel*> lstManConMod;
std::vector<manualContourModel*> lstManConModTmp;
maxZ = sizeZ;//_mbarrange->GetEnd();
totalZ = maxZ-minZ+1;
- contourextractdata->SetImage( imagedata);
+ _contourextractdata->SetImage( imagedata);
// For each slice..
for ( z=0 ; z<sizeZ ; z++)
//Extraction data from contours of each slice
- contourextractdata->SetZtoBeAnalys( z);
+ _contourextractdata->SetZtoBeAnalys( z);
tempVector[1]=z;
Instant instant(&tempVector);
lstManConModTmp = lstManConModExp;
}
- contourextractdata->SetLstManualContourModel( lstManConModTmp );
+ _contourextractdata->SetLstManualContourModel( lstManConModTmp );
pLstValue.clear();
pLstValuePosX.clear();
pLstValuePosY.clear();
pLstValuePosZ.clear();
- contourextractdata->GetValuesInsideCrown( &pLstValue,
+ _contourextractdata->GetValuesInsideCrown( &pLstValue,
&pLstValuePosX,
&pLstValuePosY,
&pLstValuePosZ);
} // for z
interfMainPanel::getInstance()->setStringInfoPanel(_T(""));
//_staticTextInformation->SetLabel( _T("") );
- delete contourextractdata;
+
}
void wxContourMainFrame::getMaskValue(vtkImageData ** mask,vtkImageData ** value,int typeContourGroup){
wxBusyCursor wait;
- ContourExtractData *contourextractdata = new ContourExtractData( true );
+ GenerateContourExtractData();
+
//int typeContourGroup = this->_radiolstboxContourGroup->GetSelection();
if (typeContourGroup==3)
{
typeContourGroup=1;
}
- contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
+ _contourextractdata ->SetTypeOperation( typeContourGroup % 3 );
std::vector<manualContourModel*> lstManConMod;
std::vector<manualContourModel*> lstManConModTmp;
maxZ = sizeZ;//_mbarrange->GetEnd();
totalZ = maxZ-minZ+1;
- contourextractdata->SetImage( imagedata);
+ _contourextractdata->SetImage( imagedata);
// For each slice..
for ( z=0 ; z<sizeZ ; z++)
interfMainPanel::getInstance()->setStringInfoPanel(tmpString);
//Extraction data from contours of each slice
- contourextractdata->SetZtoBeAnalys( z);
+ _contourextractdata->SetZtoBeAnalys( z);
tempVector[1]=z;
Instant instant(&tempVector);
lstManConModTmp = lstManConModExp;
}
- contourextractdata->SetLstManualContourModel( lstManConModTmp );
- contourextractdata->CalculateImageResult(); // with actual Z
+ _contourextractdata->SetLstManualContourModel( lstManConModTmp );
+ _contourextractdata->CalculateImageResult(); // with actual Z
} // for iContourGroup
} // for z
- (*value) = contourextractdata->GetVtkImageValueResult();
- (*mask) = contourextractdata->GetVtkImageMaskResult();
- delete contourextractdata;
+ (*value) = _contourextractdata->GetVtkImageValueResult();
+ (*mask) = _contourextractdata->GetVtkImageMaskResult();
+
}
void wxContourMainFrame::SaveImageResult(std::string directory,std::string namefile, vtkImageData* mask,vtkImageData* value)