Package org.osm2world.viewer.control.actions

Source Code of org.osm2world.viewer.control.actions.ExportPOVRayAction

package org.osm2world.viewer.control.actions;

import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.IOException;

import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileNameExtensionFilter;


import org.osm2world.core.target.common.rendering.Camera;
import org.osm2world.core.target.povray.POVRayWriter;
import org.osm2world.viewer.model.Data;
import org.osm2world.viewer.model.MessageManager;
import org.osm2world.viewer.model.RenderOptions;
import org.osm2world.viewer.view.ViewerFrame;


public class ExportPOVRayAction extends AbstractExportAction {

  public ExportPOVRayAction(ViewerFrame viewerFrame, Data data,
      MessageManager messageManager, RenderOptions renderOptions) {

    super("Export POVRay file", viewerFrame, data, messageManager, renderOptions);
    putValue(SHORT_DESCRIPTION, "Writes a source file for the POVRay raytracer");
    putValue(MNEMONIC_KEY, KeyEvent.VK_P);
    putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke(
        KeyEvent.VK_P, ActionEvent.CTRL_MASK));

  }

  protected FileNameExtensionFilter getFileNameExtensionFilter() {
    return new FileNameExtensionFilter("POVRay source files", "pov");
  }

  @Override
  protected void performExport(File file) throws HeadlessException {

    try {

      /* create camera and perspective
         compensating for left- vs. right-handed coords */

      Camera povRayCamera = new Camera();
      povRayCamera.setCamera(
          renderOptions.camera.getPos().x,
          renderOptions.camera.getPos().y,
          renderOptions.camera.getPos().z,
          renderOptions.camera.getLookAt().x,
          renderOptions.camera.getLookAt().y,
          renderOptions.camera.getLookAt().z,
          renderOptions.camera.getUp().x,
          renderOptions.camera.getUp().y,
          renderOptions.camera.getUp().z);

      /* write the file */

      POVRayWriter.writePOVInstructionFile(
          file,
          data.getConversionResults().getMapData(),
          povRayCamera, renderOptions.projection);

      messageManager.addMessage("exported POVRay file " + file);

    } catch (IOException e) {
      JOptionPane.showMessageDialog(viewerFrame,
          e.toString(),
          "Could not export POVRay file", JOptionPane.ERROR_MESSAGE);
      e.printStackTrace();     
    }
  }

}
TOP

Related Classes of org.osm2world.viewer.control.actions.ExportPOVRayAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.