#!/usr/bin/python
# -*- coding:Utf-8 -*-

#----------------------------------------------------------------------------------------------------
#	Visualization Project : 2D Spatial Data
#
# Author : Arthur COSTE
# Creation Date : October 17th, 2012
# Update Date :
# Version : 1
# Status : WORKING
#
# Purpose : Contours 
#
#----------------------------------------------------------------------------------------------------

# loading libraries
import argparse
import vtk
import sys

# read height map given as input 
reader = vtk.vtkGenericDataObjectReader()
reader.SetFileName(sys.argv[1])
reader.Update()

#reader = vtk.vtkPNMReader()
#reader.SetFileName(sys.argv[1])
#reader.Update()

# contour values ranging from (0,255).
contours = vtk.vtkContourFilter()
contours.SetInputConnection(reader.GetOutputPort())
contours.GenerateValues(7, 0, 250)

#create mapper
#The contour lines are mapped to the graphics library.
contMapper = vtk.vtkPolyDataMapper()
contMapper.SetInputConnection(contours.GetOutputPort())
contMapper.SetScalarRange(00.0, 255)

#perform rendering
actor = vtk.vtkActor()
actor.SetMapper(contMapper)
actor.GetProperty().SetPointSize(1)
renderer = vtk.vtkRenderer()
renderWindow = vtk.vtkRenderWindow()
renderWindow.AddRenderer(renderer)
renderWindowInteractor = vtk.vtkRenderWindowInteractor()
renderWindowInteractor.SetRenderWindow(renderWindow)
renderer.AddActor(actor)

# modify initial display parameters
renderer.ResetCamera()
renderer.GetActiveCamera().Azimuth(-00)
renderer.GetActiveCamera().Elevation(1)
renderer.GetActiveCamera().SetViewUp(0,0,1)
#renderer.SetBackground(0.2, 0.4, 0.6)
renderer.ResetCameraClippingRange()
renderWindow.SetSize(400, 400)

renderWindow.Render()
renderWindowInteractor.Start()
