# HelloActiviz5.cs

    /*=========================================================================

      Program: GDCM (Grassroots DICOM). A DICOM library
      Module:  $URL$

      Copyright (c) 2006-2010 Mathieu Malaterre
      All rights reserved.
      See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.

         This software is distributed WITHOUT ANY WARRANTY; without even
         the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
         PURPOSE.  See the above copyright notice for more information.

    =========================================================================*/
    using Kitware.VTK;
    using vtkgdcm;

    // The command line arguments are:
    // -I        => run in interactive mode; unless this is used, the program will
    //              not allow interaction and exit
    // -D <path> => path to the data; the data should be in <path>/Data/

    /*
     * $ export MONO_PATH=/home/mmalaterre/Software/ActiViz.NET-5.4.0.455-Linux-x86_64-Personal/bin/
     * $ export LD_LIBRARY_PATH=/home/mmalaterre/Software/ActiViz.NET-5.4.0.455-Linux-x86_64-Personal/bin/:/home/mmalaterre/Projects/gdcm/debug-gcc43/bin/
     * $ mono ./bin/HelloActiviz5.exe -I
     *
     */
    public class HelloActiviz5
    {
      public static int Main(string[] args)
        {
        vtkTesting testHelper = vtkTesting.New();
        for ( int cc = 0; cc < args.Length; cc++ )
          {
          //testHelper.AddArguments(argc,const_cast<const char **>(argv));
          //System.Console.Write( "args: " + args[cc] + "\n" );
          testHelper.AddArgument( args[cc] );
          }
        if ( testHelper.IsFlagSpecified("-D") != 0 )
          {
          string VTK_DATA_ROOT = vtkGDCMTesting.GetVTKDataRoot();
          if( VTK_DATA_ROOT != null )
            {
            //System.Console.Write( "VTK_DATA_ROOT: " + VTK_DATA_ROOT  + "\n" );
            testHelper.SetDataRoot(VTK_DATA_ROOT);
            testHelper.AddArgument("-D");
            testHelper.AddArgument(VTK_DATA_ROOT);
            }
          }

        string dataRoot = testHelper.GetDataRoot();
        string filename = dataRoot;
        filename += "/Data/mr.001";

        vtkDirectory dir = vtkDirectory.New();
        if( dir.FileIsDirectory( dataRoot ) == 0 )
          {
          filename = vtkGDCMTesting.GetGDCMDataRoot() + "/test.acr";
          }
        //System.Console.Write( "dataRoot: " + dataRoot + "\n" );
        System.Console.Write( "filename being used is: " + filename + "\n" );

        vtkGDCMImageReader reader = vtkGDCMImageReader.New();
        vtkStringArray array = vtkStringArray.New();
        array.InsertNextValue(filename);
        reader.SetFileNames(array);
        reader.Update();

        System.Console.Write(reader.GetOutput());

        vtkRenderWindowInteractor iren = vtkRenderWindowInteractor.New();

        vtkRenderer ren1 = vtkRenderer.New();
        vtkRenderWindow renWin = vtkRenderWindow.New();
        renWin.AddRenderer(ren1);

        vtkImageActor actor = vtkImageActor.New();

        vtkImageMapToWindowLevelColors coronalColors = vtkImageMapToWindowLevelColors.New();
        coronalColors.SetInput(reader.GetOutput());

        actor.SetInput(coronalColors.GetOutput());

        ren1.AddActor(actor);
        iren.SetRenderWindow(renWin);

        iren.Initialize();

        renWin.Render();

        int retVal = testHelper.IsInteractiveModeSpecified();

        if( retVal != 0 )
          {
          iren.Start();
          }

        return 0;
        }
    }