]> Creatis software - gdcm.git/blob - vtk/testvtkGdcmReader.cxx
* gdcmHeader is now aggregating gdcmFile, and not derived into. Thus, we
[gdcm.git] / vtk / testvtkGdcmReader.cxx
1 // $Header: /cvs/public/gdcm/vtk/Attic/testvtkGdcmReader.cxx,v 1.7 2003/12/22 12:46:19 regrain Exp $
2
3 #include <vtkRenderer.h>
4 #include <vtkRenderWindow.h>
5 #include <vtkRenderWindowInteractor.h>
6 #include <vtkPolyDataMapper.h>
7 #include <vtkActor.h>
8 #include <vtkImageMapper.h>
9 #include <vtkImageData.h>
10 #include <vtkImageViewer.h>
11 #include <vtkMatrix4x4.h>
12 #include <vtkLookupTable.h>
13 #include <vtkMatrixToLinearTransform.h>
14 #include <vtkTexture.h>
15 #include <vtkPlaneSource.h>
16 #include <vtkTextureMapToPlane.h>
17 #include <vtkDataSetMapper.h>
18 #include <vtkActor.h>
19 #include <vtkImageCast.h>
20 #include <vtkPNGWriter.h>
21 #include <vtkTexture.h>
22
23 #include "vtkGdcmReader.h"
24
25   
26 int main( int argc, char *argv[] )
27 {
28    int *taille;
29    int x,y;
30
31    // Lecture de l'image
32    vtkGdcmReader *reader = vtkGdcmReader::New();
33 //   reader->DebugOn();
34    // Alloc Used High
35    // 8 8 7 U : OK
36    // reader->SetFileName("../gdcmData/CT-MONO2-8-abdo.dcm");
37    // 16 12 11 U : OK but saturated
38    // reader->SetFileName("../gdcmData/CT-MONO2-12-lomb-an2.acr2");
39    // 16 12 11 U OK
40    //OKreader->SetFileName("../gdcmData/MR-MONO2-12-an2.acr2");
41    // 16 10 9 U OK
42    //reader->SetFileName("../gdcmData/CR-MONO1-10-chest.dcm");
43    //reader->Update();
44    // 16 16 15 S: OK saturation ?
45    // reader->SetFileName("../gdcmData/CT-MONO2-16-ort.dcm");
46    // 16 16 15 S:
47
48         if (argc > 1)
49      reader->SetFileName( argv[1] );
50         else
51      reader->SetFileName("../gdcmData/CT-MONO2-16-ankle.dcm");
52
53    reader->UpdateWholeExtent();
54    vtkImageData *ima = reader->GetOutput();
55    taille=ima->GetDimensions();
56    x = taille[0];  y = taille[1];
57    cout << "Dimensions of the picture as read with gdcm: "
58         << x << " x " << y << endl;
59
60    vtkLookupTable *VTKtable = vtkLookupTable::New();
61    VTKtable->SetNumberOfColors(1000);
62    VTKtable->SetTableRange(0,1000);
63    VTKtable->SetSaturationRange(0,0);
64    VTKtable->SetHueRange(0,1);
65    VTKtable->SetValueRange(0,1);
66    VTKtable->SetAlphaRange(1,1);
67    VTKtable->Build();
68    // Texture
69    vtkTexture * VTKtexture = vtkTexture::New();
70    VTKtexture->SetInput(ima);
71    VTKtexture->InterpolateOn();
72    VTKtexture->SetLookupTable(VTKtable);
73    // PlaneSource
74    vtkPlaneSource *VTKplane = vtkPlaneSource::New();
75    VTKplane->SetOrigin( -0.5, -0.5, 0.0);
76    VTKplane->SetPoint1(  0.5, -0.5, 0.0);
77    VTKplane->SetPoint2( -0.5,  0.5, 0.0);
78    // PolyDataMapper
79    vtkPolyDataMapper *VTKplaneMapper = vtkPolyDataMapper::New();
80    VTKplaneMapper->SetInput(VTKplane->GetOutput());
81    // Actor
82    vtkActor* VTKplaneActor = vtkActor::New();
83    VTKplaneActor->SetTexture(VTKtexture);
84    VTKplaneActor->SetMapper(VTKplaneMapper);
85    VTKplaneActor->PickableOn();
86    //
87    vtkRenderer        *ren = vtkRenderer::New();
88    vtkRenderWindow *renwin = vtkRenderWindow::New();
89    renwin->AddRenderer(ren);
90    vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
91    iren->SetRenderWindow(renwin);
92    ren->AddActor(VTKplaneActor);
93    ren->SetBackground(0,0,0.5);
94    renwin->Render();
95    iren->Start();
96
97   reader->Delete();
98   VTKtable->Delete();
99   VTKtexture->Delete();
100   VTKplane->Delete();
101   VTKplaneMapper->Delete();
102   VTKplaneActor->Delete();
103   ren->Delete();
104   renwin->Delete();
105   iren->Delete();
106
107    return(0);
108 }
109