#!/usr/bin/env python

# This example demonstrates the use of 2D text.

import vtk

# Create the RenderWindow, Renderer and both Actors
renderer = vtk.vtkRenderer()

renderWindow = vtk.vtkRenderWindow()
renderWindow.AddRenderer(renderer)
 
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(renderWindow)
 
# Create a test pipeline
sphereSource = vtk.vtkSphereSource()

mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(sphereSource.GetOutputPort())

actor = vtk.vtkActor()
actor.SetMapper(mapper)
 
# Create the widget
textActor = vtk.vtkTextActor()
# The text has a height 3% of the viewport height and is centered to the viewport, but not after maximizing the Window
textActor.SetInput("Maximize the window: text not centered or scaled")
textActor.GetTextProperty().SetColor( 0.0, 1.0, 0.0 )

textActor.SetTextScaleModeToProp()
textActor.GetTextProperty().SetJustificationToCentered()
textActor.GetPositionCoordinate().SetCoordinateSystemToNormalizedViewport()
textActor.GetPosition2Coordinate().SetCoordinateSystemToNormalizedViewport()
textActor.GetPositionCoordinate().SetValue( 0.0, 0.86 )
textActor.GetPosition2Coordinate().SetValue( 1.0, 0.96 )
textActor.SetMaximumLineHeight(0.1)

renderer.AddActor(textActor)

# Add the actors to the renderer, set the background and size
renderer.AddActor(actor)
renderer.SetBackground(0.1, 0.2, 0.4)
renderWindow.SetSize(400, 400)
 
interactor.Initialize()
renderWindow.Render()
 
interactor.Start()

