diff --git a/Modules/Overlays/mitkTextOverlay2D.cpp b/Modules/Overlays/mitkTextOverlay2D.cpp index 147182bab0..f199ed7d0e 100644 --- a/Modules/Overlays/mitkTextOverlay2D.cpp +++ b/Modules/Overlays/mitkTextOverlay2D.cpp @@ -1,113 +1,98 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include "mitkTextOverlay2D.h" #include #include "vtkUnicodeString.h" -#include -#include #include -#include -#include -#include -#include mitk::TextOverlay2D::TextOverlay2D() { mitk::Point2D position; position[0] = position[1] = 0; SetPosition2D(position); SetOffsetVector(position); } mitk::TextOverlay2D::~TextOverlay2D() { } mitk::Overlay::Bounds mitk::TextOverlay2D::GetBoundsOnDisplay(mitk::BaseRenderer *renderer) const { LocalStorage* ls = this->m_LSH.GetLocalStorage(renderer); mitk::Overlay::Bounds bounds; - bounds.Position = ls->m_textActor->GetPosition(); - bounds.Size[0] = ls->m_textImage->GetDimensions()[0]; - bounds.Size[1] = ls->m_textImage->GetDimensions()[1]; + bounds.Position = ls->m_TextActor->GetPosition(); + + double size[2]; + ls->m_TextActor->GetSize(renderer->GetVtkRenderer(), size); + bounds.Size[0] = size[0]; + bounds.Size[1] = size[1]; return bounds; } void mitk::TextOverlay2D::SetBoundsOnDisplay(mitk::BaseRenderer *renderer, const mitk::Overlay::Bounds& bounds) { vtkSmartPointer actor = GetVtkActor2D(renderer); actor->SetDisplayPosition(bounds.Position[0],bounds.Position[1]); -// actor->SetWidth(bounds.Size[0]); -// actor->SetHeight(bounds.Size[1]); } mitk::TextOverlay2D::LocalStorage::~LocalStorage() { } mitk::TextOverlay2D::LocalStorage::LocalStorage() { - m_textActor = vtkSmartPointer::New(); - m_textImage = vtkSmartPointer::New(); - m_imageMapper = vtkSmartPointer::New(); - m_imageMapper->SetInputData(m_textImage); - m_textActor->SetMapper(m_imageMapper); + m_TextActor = vtkSmartPointer::New(); } void mitk::TextOverlay2D::UpdateVtkOverlay2D(mitk::BaseRenderer *renderer) { LocalStorage* ls = this->m_LSH.GetLocalStorage(renderer); if(ls->IsGenerateDataRequired(renderer,this)) { - vtkSmartPointer freetype = vtkSmartPointer::New(); vtkSmartPointer prop = vtkSmartPointer::New(); - float color[3] = {1,1,1}; + float color[3] = {0.0,1.0,0.0}; float opacity = 1.0; GetColor(color,renderer); GetOpacity(opacity,renderer); prop->SetColor( color[0], color[1], color[2]); prop->SetFontSize(GetFontSize()); prop->SetOpacity(opacity); - freetype->SetScaleToPowerOfTwo(false); - - freetype->RenderString(prop,vtkUnicodeString::from_utf8(GetText().c_str()),ls->m_textImage); -// vtkSmartPointer fds = vtkTextRenderer::New(); -// int bbox[4]; -// fds->GetBoundingBox(prop,vtkUnicodeString::from_utf8(GetText().c_str()),bbox); - - ls->m_textImage->Modified(); + bool drawShadow; + GetBoolProperty( "drawShadow", drawShadow ); + prop->SetShadow( drawShadow ); - //Levelwindow has to be set to full range, that the colors are displayed properly. - ls->m_imageMapper->SetColorWindow(255); - ls->m_imageMapper->SetColorLevel(127.5); + int offset[2] = {21, -21}; + prop->SetShadowOffset( offset ); - ls->m_imageMapper->Update(); - ls->m_textActor->SetPosition(GetPosition2D(renderer)[0]+GetOffsetVector(renderer)[0], GetPosition2D(renderer)[1]+GetOffsetVector(renderer)[1]); + ls->m_TextActor->SetInput( GetText().c_str() ); + ls->m_TextActor->SetTextProperty( prop ); + ls->m_TextActor->SetPosition(GetPosition2D(renderer)[0]+GetOffsetVector(renderer)[0], GetPosition2D(renderer)[1]+GetOffsetVector(renderer)[1]); ls->UpdateGenerateDataTime(); } } vtkActor2D* mitk::TextOverlay2D::GetVtkActor2D(BaseRenderer *renderer) const { LocalStorage* ls = this->m_LSH.GetLocalStorage(renderer); - return ls->m_textActor; + return ls->m_TextActor; } diff --git a/Modules/Overlays/mitkTextOverlay2D.h b/Modules/Overlays/mitkTextOverlay2D.h index 7902853043..1c60bcfb90 100644 --- a/Modules/Overlays/mitkTextOverlay2D.h +++ b/Modules/Overlays/mitkTextOverlay2D.h @@ -1,86 +1,82 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef TEXTOVERLAY2D_H #define TEXTOVERLAY2D_H #include #include #include #include "MitkOverlaysExports.h" class vtkTextActor; -class vtkImageMapper; -class vtkImageData; namespace mitk { /** \brief Displays text on the renderwindow */ class MitkOverlays_EXPORT TextOverlay2D : public mitk::VtkOverlay2D { public: class LocalStorage : public mitk::Overlay::BaseLocalStorage { public: /** \brief Actor of a 2D render window. */ - vtkSmartPointer m_textActor; - vtkSmartPointer m_textImage; - vtkSmartPointer m_imageMapper; + vtkSmartPointer m_TextActor; /** \brief Timestamp of last update of stored data. */ itk::TimeStamp m_LastUpdateTime; /** \brief Default constructor of the local storage. */ LocalStorage(); /** \brief Default deconstructor of the local storage. */ ~LocalStorage(); }; mitkClassMacro(TextOverlay2D, mitk::VtkOverlay2D); itkFactorylessNewMacro(Self) itkCloneMacro(Self) virtual Overlay::Bounds GetBoundsOnDisplay(BaseRenderer *renderer) const; virtual void SetBoundsOnDisplay(BaseRenderer *renderer, const Bounds& bounds); protected: /** \brief The LocalStorageHandler holds all LocalStorages for the render windows. */ mutable mitk::LocalStorageHandler m_LSH; virtual vtkActor2D* GetVtkActor2D(BaseRenderer *renderer) const; void UpdateVtkOverlay2D(mitk::BaseRenderer *renderer); /** \brief explicit constructor which disallows implicit conversions */ explicit TextOverlay2D(); /** \brief virtual destructor in order to derive from this class */ virtual ~TextOverlay2D(); private: /** \brief copy constructor */ TextOverlay2D( const TextOverlay2D &); /** \brief assignment operator */ TextOverlay2D &operator=(const TextOverlay2D &); }; } // namespace mitk #endif // TEXTOVERLAY2D_H