1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
#include "vtkDICOMMetaData.h"
#include "vtkDICOMFileSorter.h"
#include "vtkSmartPointer.h"
#include "vtkStringArray.h"
#include <sstream>
#include <string.h>
#include <stdlib.h>
// macro for performing tests
#define TestAssert(t) \
if (!(t)) \
{ \
cout << exename << ": Assertion Failed: " << #t << "\n"; \
cout << __FILE__ << ":" << __LINE__ << "\n"; \
cout.flush(); \
rval |= 1; \
}
int main(int argc, char *argv[])
{
int rval = 0;
const char *exename = argv[0];
// remove path portion of exename
const char *cp = exename + strlen(exename);
while (cp != exename && cp[-1] != '\\' && cp[-1] != '/') { --cp; }
exename = cp;
vtkSmartPointer<vtkDICOMFileSorter> sorter =
vtkSmartPointer<vtkDICOMFileSorter>::New();
vtkSmartPointer<vtkStringArray> files =
vtkSmartPointer<vtkStringArray>::New();
for (int i = 1; i < argc; i++)
{
files->InsertNextValue(argv[i]);
}
sorter->SetInputFileNames(files);
sorter->Update();
int m = sorter->GetNumberOfStudies();
for (int j = 0; j < m; j++)
{
cout << "Study " << j << ":\n";
int k = sorter->GetFirstSeriesForStudy(j);
int kl = sorter->GetLastSeriesForStudy(j);
for (; k <= kl; k++)
{
cout << " Series " << k << ":\n";
vtkStringArray *a = sorter->GetFileNamesForSeries(k);
for (vtkIdType kk = 0; kk < a->GetNumberOfValues(); kk++)
{
cout << " " << a->GetValue(kk) << "\n";
}
}
}
return rval;
}
|