#include "vtkPolyData.h"
#include "vtkPolyDataReader.h"
#include "vtkMedicalImageProperties.h"
#include "vtkStringArray.h"
#include "vtkAppendPolyData.h"
#include "vtkPolyDataWriter.h"
#include "vtkPolyDataMapper.h"
#include "vtkPolyDataMapper2D.h"
#include "vtkActor2D.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkMedicalImageProperties.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include "vtkCamera.h"
#include "vtkProperty.h"
#include "vtkProperty2D.h"
#include "vtkImageData.h"
using namespace gdcm;
int main(int argc, char *argv[])
{
if( argc < 2 )
{
std::cerr << argv[0] << " directory-with-rtstruct-and-ct-images\n";
return 1;
}
std::string theDirName(argv[1]);
if (theRTSeries.empty())
{
std::cerr << "No RTStructs found for the test, ending." << std::endl;
return 1;
}
reader->SetFileName( theRTNames[0].c_str() );
reader->Update();
int numMasks = reader->GetNumberOfOutputPorts() + 1;
writer->SetFileName( std::string(theDirName + "/" + "GDCMTestRTStruct." + theRTSeries[0] + ".dcm").c_str());
vtkStringArray* roiNames = vtkStringArray::New();
vtkStringArray* roiAlgorithms = vtkStringArray::New();
vtkStringArray* roiTypes = vtkStringArray::New();
roiNames->SetNumberOfValues(numMasks);
roiAlgorithms->SetNumberOfValues(numMasks);
roiTypes->SetNumberOfValues(numMasks);
vtkAppendPolyData* append = vtkAppendPolyData::New();
for (int i = 0; i < reader->GetNumberOfOutputPorts(); ++i)
{
writer->SetInput(i, reader->GetOutput(i));
append->AddInput(reader->GetOutput(i));
std::string theString = reader->GetRTStructSetProperties()->GetStructureSetROIName(i);
roiNames->InsertValue(i, theString);
theString = reader->GetRTStructSetProperties()->GetStructureSetROIGenerationAlgorithm(i);
roiAlgorithms->InsertValue(i, theString);
theString = reader->GetRTStructSetProperties()->GetStructureSetRTROIInterpretedType(i);
roiTypes->InsertValue(i, theString);
}
vtkPolyData* blank = vtkPolyData::New();
writer->SetInput(numMasks-1, blank);
roiNames->InsertValue(numMasks-1, "blank");
roiAlgorithms->InsertValue(numMasks-1, "blank");
roiTypes->InsertValue(numMasks-1, "ORGAN");
reader->GetRTStructSetProperties()->GetStructureSetLabel(),
reader->GetRTStructSetProperties()->GetStructureSetName(),
roiNames, roiAlgorithms, roiTypes);
writer->Write();
reader->Print( std::cout );
reader->GetOutput()->Print( std::cout );
vtkPolyDataMapper *cubeMapper = vtkPolyDataMapper::New();
cubeMapper->SetInput( append->GetOutput());
cubeMapper->SetScalarRange(0,7);
vtkActor *cubeActor = vtkActor::New();
cubeActor->SetMapper(cubeMapper);
vtkProperty * property = cubeActor->GetProperty();
property->SetRepresentationToWireframe();
vtkRenderer *renderer = vtkRenderer::New();
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer(renderer);
vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
iren->SetRenderWindow(renWin);
renderer->AddActor(cubeActor);
renderer->ResetCamera();
renderer->SetBackground(1,1,1);
renWin->SetSize(300,300);
renWin->Render();
iren->Start();
reader->Delete();
append->Delete();
cubeMapper->Delete();
cubeActor->Delete();
renderer->Delete();
renWin->Delete();
iren->Delete();
roiNames->Delete();
roiTypes->Delete();
theProperties->Delete();
roiAlgorithms->Delete();
blank->Delete();
writer->Delete();
return 0;
}