/*
 * LargeImage.java
 *
 * Created on November 2, 2000, 4:23 PM
 */

package ovt.servlet;

import ovt.util.*;
import ovt.beans.*;
import ovt.interfaces.*;
import ovt.graphics.*;

import vtk.*;

import java.awt.*;
import java.awt.image.*;
import java.io.*;
/**
 *
 * @author  ko
 * @version 
 */
public class LargeImage extends java.lang.Object {
    vtkRenderLargeImage renderLarge = new vtkRenderLargeImage();
    vtkImageViewer viewer = new vtkImageViewer();
    /** Creates new LargeImage */
    public LargeImage(vtkRenderer ren) {
        renderLarge.SetInput(ren);
        
        /*viewer.SetInput(renderLarge.GetOutput());
        viewer.SetColorWindow(255);
        viewer.SetColorLevel(127.5);*/
    }
    
    public void setMagnification(int magnification) {
        renderLarge.SetMagnification(magnification);
    }
    
    /** lock - the synchronization lock */
    public Image getImage(Object lock) {
      synchronized  (lock) {
        renderLarge.Update();
      }
      Log.log("LargeImage :: getImage() ...", 5);
      //viewer.Render(); 
      String tmpFile = Utils.getRandomFilename("/tmp/tmpOVTLargeImage", ".bmp");
      vtkBMPWriter writer = new vtkBMPWriter();
         writer.SetInput(renderLarge.GetOutput());
         writer.SetFileName(tmpFile);
         writer.Write();
    
      Image img = null;
      try {
        img = BmpDecoder.getImage(tmpFile);    
      } catch (IOException e) { 
        e.printStackTrace(); 
      }
    
      new File(tmpFile).delete();
      return img;
  }
}
