Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes

mitk::ManufacturerLogo Class Reference

#include <mitkManufacturerLogo.h>

Inheritance diagram for mitk::ManufacturerLogo:
Inheritance graph
[legend]
Collaboration diagram for mitk::ManufacturerLogo:
Collaboration graph
[legend]

List of all members.

Public Types

enum  LogoPosition {
  UpperLeft, UpperRight, LowerLeft, LowerRight,
  Middle
}
typedef ManufacturerLogo Self
typedef BaseData Superclass
typedef itk::SmartPointer< SelfPointer
typedef itk::SmartPointer
< const Self
ConstPointer

Public Member Functions

virtual const char * GetClassName () const
virtual void SetRenderWindow (vtkRenderWindow *renderWindow)
virtual void SetLogoSource (const char *filename)
virtual void SetOpacity (double opacity)
virtual void SetZoomFactor (double factor)
virtual void Enable ()
virtual void Disable ()
virtual bool IsEnabled ()
virtual void SetRequestedRegionToLargestPossibleRegion ()
virtual bool RequestedRegionIsOutsideOfTheBufferedRegion ()
virtual bool VerifyRequestedRegion ()
virtual void SetRequestedRegion (itk::DataObject *)
virtual vtkRenderWindow * GetRenderWindow ()
virtual vtkRenderer * GetVtkRenderer ()
virtual vtkImageActor * GetActor ()
virtual vtkImageMapper * GetMapper ()
virtual void ForceMBILogoVisible (bool visible)

Static Public Member Functions

static Pointer New ()

Protected Member Functions

void SetupCamera ()
void SetupPosition ()
 ManufacturerLogo ()
 ~ManufacturerLogo ()

Protected Attributes

vtkRenderWindow * m_RenderWindow
vtkRenderer * m_Renderer
vtkImageActor * m_Actor
vtkImageMapper * m_Mapper
vtkPNGReader * m_PngReader
vtkCamera * m_Camera
vtkImageImport * m_VtkImageImport
std::string m_FileName
bool m_IsEnabled
bool m_ForceShowMBIDepartmentLogo
LogoPosition m_LogoPosition
double m_ZoomFactor
double m_Opacity
char * m_ImageData

Detailed Description

Renders a company logo in the foreground of a vtkRenderWindow.

Definition at line 43 of file mitkManufacturerLogo.h.


Member Typedef Documentation

typedef itk::SmartPointer<const Self> mitk::ManufacturerLogo::ConstPointer

Reimplemented from mitk::BaseData.

Definition at line 47 of file mitkManufacturerLogo.h.

typedef itk::SmartPointer<Self> mitk::ManufacturerLogo::Pointer

Reimplemented from mitk::BaseData.

Definition at line 47 of file mitkManufacturerLogo.h.

Reimplemented from mitk::BaseData.

Definition at line 47 of file mitkManufacturerLogo.h.

Reimplemented from mitk::BaseData.

Definition at line 47 of file mitkManufacturerLogo.h.


Member Enumeration Documentation

Enumerator:
UpperLeft 
UpperRight 
LowerLeft 
LowerRight 
Middle 

Definition at line 51 of file mitkManufacturerLogo.h.


Constructor & Destructor Documentation

mitk::ManufacturerLogo::ManufacturerLogo (  ) [protected]
mitk::ManufacturerLogo::~ManufacturerLogo (  ) [protected]

Destructor

Definition at line 70 of file mitkManufacturerLogo.cpp.

{
  if ( m_RenderWindow != NULL )
    if ( this->IsEnabled() )
      this->Disable();
  
  if ( m_Mapper != NULL )
    m_Mapper->Delete();
  
  if ( m_Actor!=NULL )
    m_Actor->Delete();
  
  if ( m_Renderer != NULL )
    m_Renderer->Delete();

  if ( m_PngReader != NULL )
    m_PngReader->Delete();

  if ( m_VtkImageImport != NULL )
    m_VtkImageImport->Delete();

  if ( m_ImageData != NULL)
    delete[] m_ImageData;
}

Member Function Documentation

void mitk::ManufacturerLogo::Disable (  ) [virtual]

Disables drawing of the logo. If you want to enable it, call the Enable() function.

Definition at line 345 of file mitkManufacturerLogo.cpp.

References mitk::VtkLayerController::GetInstance(), and mitk::VtkLayerController::RemoveRenderer().

void mitk::ManufacturerLogo::Enable (  ) [virtual]

Enables drawing of the logo. If you want to disable it, call the Disable() function.

Definition at line 155 of file mitkManufacturerLogo.cpp.

References mitk::VtkLayerController::GetInstance(), mitk::VtkLayerController::InsertForegroundRenderer(), mbiLogo_Data, mbiLogo_Height, mbiLogo_NumberOfScalars, and mbiLogo_Width.

{
  if(m_IsEnabled)
    return;

  if(m_RenderWindow != NULL)
  {
    if(itksys::SystemTools::FileExists(m_FileName.c_str()) && !m_ForceShowMBIDepartmentLogo)
    {
      m_PngReader->Update();
      m_Actor->SetInput(m_PngReader->GetOutput());
    }
    else // either logo file not found or logo renderer is forced to show the MBI logo
    {
      m_VtkImageImport->SetDataScalarTypeToUnsignedChar();
      m_VtkImageImport->SetNumberOfScalarComponents(mbiLogo_NumberOfScalars);
      m_VtkImageImport->SetWholeExtent(0,mbiLogo_Width-1,0,mbiLogo_Height-1,0,1-1);
      m_VtkImageImport->SetDataExtentToWholeExtent();

      // flip mbi logo around y axis and change color order
      m_ImageData = new char[mbiLogo_Height*mbiLogo_Width*mbiLogo_NumberOfScalars];
      
      unsigned int column, row;
      char * dest   = m_ImageData;
      char * source = (char*) &mbiLogo_Data[0];;
      char r, g, b, a;
      for (column = 0; column < mbiLogo_Height; column++)
        for (row = 0; row < mbiLogo_Width; row++)
        {   //change r with b
            b = *source++;
            g = *source++;
            r = *source++;
            a = *source++;

            *dest++ = r;
            *dest++ = g;
            *dest++ = b;
            *dest++ = a;
          }        

      m_VtkImageImport->SetImportVoidPointer(m_ImageData);
      m_VtkImageImport->Modified();
      m_VtkImageImport->Update();
      
      m_Actor->SetInput(m_VtkImageImport->GetOutput());
    }

    #if ( VTK_MAJOR_VERSION >= 5 )
      m_Actor->SetOpacity(m_Opacity);
    #endif
    
    m_Renderer->AddActor( m_Actor );
    m_Renderer->InteractiveOff();
    
    SetupCamera();
    SetupPosition();
    
    mitk::VtkLayerController::GetInstance(m_RenderWindow)->InsertForegroundRenderer(m_Renderer,false);
    
    m_IsEnabled = true;
  }
}
void mitk::ManufacturerLogo::ForceMBILogoVisible ( bool  visible ) [virtual]

If set true, this method forces the logo rendering mechanism that it always renders the MBI department logo, independent from mainapp option settings.

Definition at line 327 of file mitkManufacturerLogo.cpp.

vtkImageActor * mitk::ManufacturerLogo::GetActor (  ) [virtual]

Returns the actor associated with the logo

Definition at line 127 of file mitkManufacturerLogo.cpp.

{
  return m_Actor;
}
virtual const char* mitk::ManufacturerLogo::GetClassName (  ) const [virtual]

Reimplemented from mitk::BaseData.

vtkImageMapper * mitk::ManufacturerLogo::GetMapper (  ) [virtual]

Returns the mapper associated with the logo

Returns the mapper associated with the logo.

Definition at line 136 of file mitkManufacturerLogo.cpp.

{
  return m_Mapper;
}
vtkRenderWindow * mitk::ManufacturerLogo::GetRenderWindow (  ) [virtual]

Returns the vtkRenderWindow, which is used for displaying the logo

Definition at line 109 of file mitkManufacturerLogo.cpp.

{
  return m_RenderWindow;
}
vtkRenderer * mitk::ManufacturerLogo::GetVtkRenderer (  ) [virtual]

Returns the renderer responsible for rendering the logo into the vtkRenderWindow

Definition at line 119 of file mitkManufacturerLogo.cpp.

{
  return m_Renderer;
}
bool mitk::ManufacturerLogo::IsEnabled (  ) [virtual]

Checks, if the logo is currently enabled (visible)

Definition at line 358 of file mitkManufacturerLogo.cpp.

{
  return  m_IsEnabled;
}
static Pointer mitk::ManufacturerLogo::New (  ) [static]
bool mitk::ManufacturerLogo::RequestedRegionIsOutsideOfTheBufferedRegion (  ) [virtual]

Empty implementation, since the ManufacturerLogo doesn't support the requested region concept

Implements mitk::BaseData.

Definition at line 369 of file mitkManufacturerLogo.cpp.

{
    return false;    
}
void mitk::ManufacturerLogo::SetLogoSource ( const char *  filename ) [virtual]

Sets the source file for the logo.

Definition at line 141 of file mitkManufacturerLogo.cpp.

{
  std::string file = filename;
  if(file.length() != 0)
  {
    m_FileName  = filename;
    m_PngReader->SetFileName(m_FileName.c_str());
  }
}
void mitk::ManufacturerLogo::SetOpacity ( double  opacity ) [virtual]

Sets the opacity level of the logo.

Definition at line 336 of file mitkManufacturerLogo.cpp.

{
  m_Opacity = opacity;
}
void mitk::ManufacturerLogo::SetRenderWindow ( vtkRenderWindow *  renderWindow ) [virtual]

Sets the renderwindow, in which the logo will be shown. Make sure, you have called this function before calling Enable()

Definition at line 100 of file mitkManufacturerLogo.cpp.

{
  m_RenderWindow = renderWindow;
}
void mitk::ManufacturerLogo::SetRequestedRegion ( itk::DataObject *   ) [virtual]

Empty implementation, since the ManufacturerLogo doesn't support the requested region concept

Implements mitk::BaseData.

Definition at line 379 of file mitkManufacturerLogo.cpp.

{
    //nothing to do
}
void mitk::ManufacturerLogo::SetRequestedRegionToLargestPossibleRegion (  ) [virtual]

Empty implementation, since the ManufacturerLogo doesn't support the requested region concept

Implements mitk::BaseData.

Definition at line 364 of file mitkManufacturerLogo.cpp.

{
    //nothing to do
}
void mitk::ManufacturerLogo::SetupCamera (  ) [protected]

Definition at line 219 of file mitkManufacturerLogo.cpp.

References QuadProgPP::max().

{
  // set the vtk camera in way that stretches the logo all over the renderwindow

  vtkImageData * image = m_Actor->GetInput();
  m_Camera = m_Renderer->GetActiveCamera();
  m_Camera->SetClippingRange(1,100000);

  if ( !image )
    return;
  
  double spacing[3];
  double origin[3];
  int   dimensions[3];

  image->GetSpacing(spacing);
  image->GetOrigin(origin);
  image->GetDimensions(dimensions);

  double focalPoint[3];
  double position[3];

  for ( unsigned int cc = 0; cc < 3; cc++)
  {
    focalPoint[cc] = origin[cc] + ( spacing[cc] * dimensions[cc] ) / 2.0;
    position[cc]   = focalPoint[cc];
  }


  m_Camera->SetViewUp (0,1,0);
  int idx = 2;
  const double distanceToFocalPoint = 1000;
  position[idx] = distanceToFocalPoint;

  m_Camera->ParallelProjectionOn();
  m_Camera->SetPosition (position);
  m_Camera->SetFocalPoint (focalPoint);

  int d1 = (idx + 1) % 3;
  int d2 = (idx + 2) % 3;

  double max = std::max(dimensions[d1],dimensions[d2]);

  m_Camera->SetParallelScale( max / 2 );
}
void mitk::ManufacturerLogo::SetupPosition (  ) [protected]

Definition at line 265 of file mitkManufacturerLogo.cpp.

References LowerLeft, LowerRight, QuadProgPP::max(), Middle, UpperLeft, and UpperRight.

{ // Position and Scale of the logo
  
  double newPos[4];
  int dimensions[3];
  vtkImageData * image = m_Actor->GetInput();
  image->GetDimensions(dimensions);
  // normalize image dimensions
  double max = std::max(dimensions[0],dimensions[1]);
  double normX = dimensions[0] / max;
  double normY = dimensions[1] / max;

  double buffer = 0; // buffer to the boarder of the renderwindow
 
  switch(m_LogoPosition)
  {
    case mitk::ManufacturerLogo::LowerLeft:
    {
      newPos[0] = (0 + buffer);
      newPos[1] = (0 + buffer);
      newPos[2] = 0.2 * normX * m_ZoomFactor;
      newPos[3] = 0.2 * normY * m_ZoomFactor;
      break;
    }
    case mitk::ManufacturerLogo::LowerRight:
    {
      newPos[0] = (1 - buffer) - 0.2 * normX * m_ZoomFactor;
      newPos[1] = 0.0;
      newPos[2] = (1 - buffer);
      newPos[3] = 0.2 * normY * m_ZoomFactor;
      break;
    }
    case mitk::ManufacturerLogo::UpperLeft:
    {
      newPos[0] = (0 + buffer);
      newPos[1] = (1 - buffer) - 0.2 * normY * m_ZoomFactor;
      newPos[2] = 0.2 * normX * m_ZoomFactor;
      newPos[3] = (1 - buffer);
      break;
    }
    case mitk::ManufacturerLogo::UpperRight:
    {
      newPos[0] = (1 - buffer) - 0.2 * normX * m_ZoomFactor;
      newPos[1] = (1 - buffer) - 0.2 * normY * m_ZoomFactor;
      newPos[2] = (1 - buffer);
      newPos[3] = (1 - buffer);
      break;
    }
    case mitk::ManufacturerLogo::Middle:
    default:
    {
      newPos[0] = 0.5 - 0.2 * normX * m_ZoomFactor;
      newPos[1] = 0.5 + 0.2 * normY * m_ZoomFactor;
      newPos[2] = 0.5 - 0.2 * normX * m_ZoomFactor;
      newPos[3] = 0.5 + 0.2 * normY * m_ZoomFactor;
      break;
    }
  }
    
  m_Renderer->SetViewport(newPos);
}
void mitk::ManufacturerLogo::SetZoomFactor ( double  factor ) [virtual]

Specifies the logo size, values from 0...10, where 1 is a nice little logo

Definition at line 332 of file mitkManufacturerLogo.cpp.

{
  m_ZoomFactor = factor;
}
bool mitk::ManufacturerLogo::VerifyRequestedRegion (  ) [virtual]

Empty implementation, since the ManufacturerLogo doesn't support the requested region concept

Implements mitk::BaseData.

Definition at line 374 of file mitkManufacturerLogo.cpp.

{
    return true;
}

Member Data Documentation

vtkImageActor* mitk::ManufacturerLogo::m_Actor [protected]

Definition at line 163 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().

vtkCamera* mitk::ManufacturerLogo::m_Camera [protected]

Definition at line 166 of file mitkManufacturerLogo.h.

std::string mitk::ManufacturerLogo::m_FileName [protected]

Definition at line 169 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().

Definition at line 172 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().

Definition at line 178 of file mitkManufacturerLogo.h.

Definition at line 171 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().

Definition at line 174 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().

vtkImageMapper* mitk::ManufacturerLogo::m_Mapper [protected]

Definition at line 164 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().

Definition at line 176 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().

vtkPNGReader* mitk::ManufacturerLogo::m_PngReader [protected]

Definition at line 165 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().

vtkRenderer* mitk::ManufacturerLogo::m_Renderer [protected]

Definition at line 162 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().

vtkRenderWindow* mitk::ManufacturerLogo::m_RenderWindow [protected]

Definition at line 161 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().

vtkImageImport* mitk::ManufacturerLogo::m_VtkImageImport [protected]

Definition at line 167 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().

Definition at line 175 of file mitkManufacturerLogo.h.

Referenced by ManufacturerLogo().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines