Hello, <br> the following test-application should print the greek letter "MU" (micro sign)<br>but it does print an "A with a hat" plus a MU.<br>The same happens with other UTF8 encoded letters.<br><br>===================================================================<br>
int main()<br>{<br> VTK_CREATE(vtkRenderer,ren1);<br> ren1->SetBackground( 0.2, 0.3, 0.5 );<br> <br> VTK_CREATE(vtkRenderWindow,renWin);<br> renWin->AddRenderer( ren1 );<br> renWin->SetSize( 300, 300 );<br>
vtkUnicodeString l_vtkUnicodeStr(vtkUnicodeString::from_utf8("\xc2\xb5"));<br> <br><br> VTK_CREATE(CStringItem,l_item);<br> vtkStdString l_str(l_vtkUnicodeStr.utf8_str(),l_vtkUnicodeStr.byte_count());<br>
l_item->SetLabel(l_str);<br> VTK_CREATE(vtkContextActor,l_actor);<br> l_actor->GetScene()->AddItem(l_item);<br><br> vtkOpenGLContextDevice2D::SafeDownCast(l_actor->GetContext()->GetDevice())<br>
->SetStringRendererToQt();<br> ren1->AddActor(l_actor);<br><br> VTK_CREATE(vtkRenderWindowInteractor, interactor);<br> interactor->SetRenderWindow(renWin);<br> renWin->SetMultiSamples(0);<br>
renWin->Render();<br><br> interactor->Start();<br><br>}<br><br>/// code for class CStringItem used above: (Header)<br><br>class CStringItem : public vtkContextItem<br>{<br>public:<br> //TODO : add reset string, set position of label etc.<br>
virtual bool Paint(vtkContext2D *painter);<br> //CStringItem(const vtkStdString& p_vtkStrDefault);<br> static CStringItem *New();<br> vtkTypeRevisionMacro(CStringItem, vtkContextItem);<br> void SetLabel(const vtkStdString& p_vtkStrLabel);<br>
<br>private:<br><br> vtkStdString m_vtkStr;<br>};<br><br>/// CPP file:<br><br>bool CStringItem::Paint( vtkContext2D *painter )<br>{<br> painter->GetTextProp()->SetVerticalJustificationToCentered();<br> painter->GetTextProp()->SetJustificationToCentered();<br>
painter->GetTextProp()->SetColor(1.0, 1.0, 1.0);<br> painter->GetTextProp()->SetFontSize(13);<br> painter->GetTextProp()->SetFontFamilyToCourier();<br> painter->DrawString(100, 100, m_vtkStr);<br>
<br> // TODO return sth meaningfull<br> return true;<br>}<br><br>void CStringItem::SetLabel(const vtkStdString& p_vtkStrLabel )<br>{<br> m_vtkStr = p_vtkStrLabel;<br>}<br><br>vtkStandardNewMacro(CStringItem);<br>
vtkCxxRevisionMacro(CStringItem, "$Revision: 1.5 $");<br><br>=====================================================================<br><br>In the above code, i could simply pass "\xc2\xb5" to the SetLabel method and the same happens.<br>
Any help would be greatly appreciated.<br><br>Best Regards,<br>Oliver Kania<br><br>