Skip to content

Legend

vtk-examples/Java/Visualization/Legend

Description

vtkLegendBoxActor object is used to associate a symbol with a text string.

The user specifies a vtkPolyData to use as the symbol, and a string associated with the symbol. The actor can then be placed in the scene in the same way that any other vtkActor2D can be used.

Other languages

See (Cxx)

Question

If you have a question about this example, please use the VTK Discourse Forum

Code

Legend.java

import vtk.vtkActor;
import vtk.vtkNamedColors;
import vtk.vtkNativeLibrary;
import vtk.vtkPolyDataMapper;
import vtk.vtkRenderWindow;
import vtk.vtkRenderWindowInteractor;
import vtk.vtkRenderer;
import vtk.vtkSphereSource;
import vtk.vtkLegendBoxActor;
import vtk.vtkCubeSource;
import vtk.vtkPolyData;


public class Legend 
{
  // -----------------------------------------------------------------
  // Load VTK library and print which library was not properly loaded
  static 
  {
    if (!vtkNativeLibrary.LoadAllNativeLibraries()) 
    {
      for (vtkNativeLibrary lib : vtkNativeLibrary.values()) 
      {
        if (!lib.IsLoaded()) 
        {
          System.out.println(lib.GetLibraryName() + " not loaded");
        }
      }
    }
    vtkNativeLibrary.DisableOutputWindow(null);
  }
  // -----------------------------------------------------------------

  public static void main(String s[]) 
  {
    vtkNamedColors colors = new vtkNamedColors();

    //For boxLegendColor
    double boxLegendColor[] = new double[4];
    //For ballLegendColor
    double ballLegendColor[] = new double[4];
    //Renderer Background Color
    double Bgcolor[] = new double[4];
    //Renderer legend Background Color
    double legendBgcolor[] = new double[4];

    colors.GetColor("Tomato", boxLegendColor);
    colors.GetColor("banana", ballLegendColor);
    colors.GetColor("cyan", Bgcolor);
    colors.GetColor("warm_grey", legendBgcolor);

    vtkSphereSource sphereSource = new vtkSphereSource();
    sphereSource.SetCenter(0.0, 0.0, 0.0);
    sphereSource.SetRadius(5000.0);
    sphereSource.Update();

    vtkPolyData polydata = sphereSource.GetOutput();

    // Create a mapper
    vtkPolyDataMapper mapper = new vtkPolyDataMapper();
    mapper.SetInputData(polydata);

    vtkActor actor = new vtkActor();
    actor.SetMapper(mapper);

    vtkLegendBoxActor legend = new vtkLegendBoxActor();
    legend.SetNumberOfEntries(2);

    vtkCubeSource legendBox = new vtkCubeSource();
    legendBox.Update();
    legend.SetEntry(0, legendBox.GetOutput(), "Box", boxLegendColor);
    legend.SetEntry(1, sphereSource.GetOutput(), "Ball", ballLegendColor);

    // place legend in lower right
    legend.GetPositionCoordinate().SetCoordinateSystemToView();
    legend.GetPositionCoordinate().SetValue(.5, -1.0);

    legend.GetPosition2Coordinate().SetCoordinateSystemToView();
    legend.GetPosition2Coordinate().SetValue(1.0, -0.5);

    legend.UseBackgroundOn();
    legend.SetBackgroundColor(legendBgcolor);

    // Create the renderer, render window and interactor.
    vtkRenderer ren = new vtkRenderer();
    vtkRenderWindow renWin = new vtkRenderWindow();
    renWin.AddRenderer(ren);
    vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();
    iren.SetRenderWindow(renWin);

    // Visualise
    ren.AddActor(actor);
    ren.AddActor(legend);
    ren.SetBackground(Bgcolor);

    renWin.SetSize(300, 300);
    renWin.Render();

    iren.Initialize();
    iren.Start();
  }
}