diff --git a/Rendering/Core/vtkTextMapper.cxx b/Rendering/Core/vtkTextMapper.cxx index da885b6a0e48dedcd55e20ce3db784089c03ef2f..6d9ea59c4c34726b36b7a1aee88d50317fcc14fe 100644 --- a/Rendering/Core/vtkTextMapper.cxx +++ b/Rendering/Core/vtkTextMapper.cxx @@ -367,7 +367,7 @@ void vtkTextMapper::RenderOverlay(vtkViewport *viewport, vtkActor2D *actor) vtkDebugMacro(<<"RenderOverlay called"); vtkRenderer *ren = NULL; - if (this->Input) + if (this->Input && this->Input[0]) { vtkWindow *win = viewport->GetVTKWindow(); if (!win) @@ -394,15 +394,15 @@ void vtkTextMapper::RenderOverlay(vtkViewport *viewport, vtkActor2D *actor) info->Set(vtkProp::GeneralTextureUnit(), this->Texture->GetTextureUnit()); } - } - vtkDebugMacro(<<"PolyData::RenderOverlay called"); - this->Mapper->RenderOverlay(viewport, actor); + vtkDebugMacro(<<"PolyData::RenderOverlay called"); + this->Mapper->RenderOverlay(viewport, actor); - // clean up - if (ren) - { - this->Texture->PostRender(ren); + // clean up + if (ren) + { + this->Texture->PostRender(ren); + } } vtkDebugMacro(<<"Superclass::RenderOverlay called"); diff --git a/Rendering/FreeType/Testing/Cxx/TestFreeTypeTextMapperNoMath.cxx b/Rendering/FreeType/Testing/Cxx/TestFreeTypeTextMapperNoMath.cxx index ad66e496301f4c0390ce9728ffdc810f0912b0dc..03f6d00c115016da1b610a2b078628603df29d21 100644 --- a/Rendering/FreeType/Testing/Cxx/TestFreeTypeTextMapperNoMath.cxx +++ b/Rendering/FreeType/Testing/Cxx/TestFreeTypeTextMapperNoMath.cxx @@ -172,6 +172,19 @@ int TestFreeTypeTextMapperNoMath(int argc, char *argv[]) mapper11->SetInput("oTeVaVoVAW"); actor11->SetPosition(300, 200); + // Empty string, solid background: should not render + vtkNew<vtkTextMapper> mapper12; + vtkNew<vtkActor2D> actor12; + actor12->SetMapper(mapper12.GetPointer()); + mapper12->GetTextProperty()->SetFontSize(16); + mapper12->GetTextProperty()->SetColor(1.0, 0.0, 0.0); + mapper12->GetTextProperty()->SetBackgroundColor(1.0, 0.5, 1.0); + mapper12->GetTextProperty()->SetBackgroundOpacity(1.0); + mapper12->GetTextProperty()->SetJustificationToRight(); + mapper12->GetTextProperty()->SetVerticalJustificationToCentered(); + mapper12->SetInput(""); + actor12->SetPosition(0, 0); + // Boring rendering setup.... vtkNew<vtkRenderer> ren; @@ -193,6 +206,7 @@ int TestFreeTypeTextMapperNoMath(int argc, char *argv[]) ren->AddActor(actor9.GetPointer()); ren->AddActor(actor10.GetPointer()); ren->AddActor(actor11.GetPointer()); + ren->AddActor(actor12.GetPointer()); win->SetMultiSamples(0); win->Render(); diff --git a/Rendering/FreeType/vtkFreeTypeTools.cxx b/Rendering/FreeType/vtkFreeTypeTools.cxx index 114f5f85c37980e7839360e6dd424054e36a4def..e071bea9d113900f2a385588780a1ae6f4fe775e 100644 --- a/Rendering/FreeType/vtkFreeTypeTools.cxx +++ b/Rendering/FreeType/vtkFreeTypeTools.cxx @@ -1239,6 +1239,14 @@ bool vtkFreeTypeTools::RenderStringInternal(vtkTextProperty *tprop, return false; } + if (str.empty()) + { + data->Initialize(); + textDims[0] = 0; + textDims[1] = 0; + return true; + } + ImageMetaData metaData; // Setup the metadata cache