package DicomVTK;


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import vtk.*;



/**
 * An application that displays a JButton and several JRadioButtons.
 * The JRadioButtons determine the look and feel used by the application.
 */
public class SimpleVTK extends JPanel implements ActionListener {
  static JFrame frame;
  vtkPanel renWin;
  JButton exitButton;
  
  public SimpleVTK() 
  {

	  {
		        System.loadLibrary("vtkCommonJava");
		        System.loadLibrary("vtkFilteringJava");
		        System.loadLibrary("vtkIOJava");
		        System.loadLibrary("vtkImagingJava");
		        System.loadLibrary("vtkGraphicsJava");
		 	 	System.loadLibrary("vtkRenderingJava");
		        
	  }
	  
    setLayout(new BorderLayout());
    vtkDICOMImageReader dicomreader = new vtkDICOMImageReader();
    dicomreader.SetDirectoryName("/home/gururaj/MANIX/MANIX/CER-CT/ANGIO CT");
	dicomreader.Update();
	System.out.println("File Dimension " +  dicomreader.GetFileDimensionality());
	
	vtkPolyDataWriter polyWriter = new vtkPolyDataWriter();
	polyWriter.SetFileName("/home/gururaj/eclipse Project/SimpleVTK/SimpleVtk/CardiacCT/data.vtk");
	polyWriter.SetInput(dicomreader.GetOutput());
	polyWriter.SetFileTypeToASCII();
	polyWriter.Write();
	polyWriter.Update();
		

	//3d Construction
    String strfilename = new String();
    strfilename = "/home/gururaj/eclipse Project/SimpleVTK/SimpleVtk/CardiacCT/data.vtk";
    
    vtkPolyDataReader polyReader = new vtkPolyDataReader();
    polyReader.SetFileName(strfilename);
    polyReader.Update();
    
    vtkPolyData polyData = new vtkPolyData();
    polyData.DeepCopy(polyReader.GetOutput());
    
    vtkPolyDataMapper polyMapper = new vtkPolyDataMapper();
    polyMapper.SetInput(polyData);
    polyMapper.Update();
    
    vtkActor actor = new vtkActor();
    actor.SetMapper(polyMapper);
    actor.VisibilityOn();
    
    vtkRenderer render = new vtkRenderer();
    vtkRenderWindow renwindow = new vtkRenderWindow();
    renwindow.AddRenderer(render);
    
    vtkRenderWindowInteractor renintec = new vtkRenderWindowInteractor();
    renintec.SetRenderWindow(renwindow);
    
    render.AddActor(actor);
    render.SetBackground(0.2,0.3,0);
    renwindow.BordersOff();
    renwindow.SetSize(500, 500);
    renwindow.Render();
    render.ResetCamera();
    renintec.Start();
    
   /* exitButton = new JButton("Exit");
    exitButton.addActionListener(this);
    //add(renWin, BorderLayout.CENTER);
    add(exitButton, BorderLayout.EAST);*/
    //3d Construction
 
    /*vtkRenderer renderer = new vtkRenderer();
    renderer.AddActor(imgActor);
    renderer.ResetCamera();
    renderer.UpdateLightsGeometryToFollowCamera();
    renWin = new vtkPanel();
    renWin.GetRenderer().AddActor(imgActor);*/
    
   
  }


  /** An ActionListener that listens to the radio buttons. */
  public void actionPerformed(ActionEvent e) 
  {
    if (e.getSource().equals(exitButton)) 
      {
        System.exit(0);
      }
  }

  public static void main(String s[]) 
  {
	    SimpleVTK panel = new SimpleVTK();
	/*	
	    frame = new JFrame("SimpleVTK");
	    frame.addWindowListener(new WindowAdapter() 
	      {
	        public void windowClosing(WindowEvent e) {System.exit(0);}
	      });
	    frame.getContentPane().add("Center", panel);
	    frame.pack();
	    frame.setVisible(true);*/
  }
}


