FontFile
VTKExamples/Cxx/Visualization/FontFile
Description¶
The example uses an external font file. There are many sources of TrueType fonts. Here is one source.
Code¶
FontFile.cxx
#include <vtkSmartPointer.h> #include <vtkTextMapper.h> #include <vtkActor2D.h> #include <vtkRenderer.h> #include <vtkRenderWindow.h> #include <vtkRenderWindowInteractor.h> #include <vtkTextProperty.h> #include <vtksys/SystemTools.hxx> #include <sstream> #include <string> int main (int argc, char *argv[]) { if (argc < 2) { std::cerr << "Usage: " << argv[1] << " font.ttf" << std::endl; return EXIT_FAILURE; } std::string fontFile(argv[1]); std::stringstream str; str << "Font: " << vtksys::SystemTools::GetFilenameWithoutExtension(std::string(argv[1])) << "\n" << "Sample multiline\ntext rendered\nusing FreeTypeTools."; int width = 640; int height = 480; vtkSmartPointer<vtkTextMapper> mapper = vtkSmartPointer<vtkTextMapper>::New(); vtkSmartPointer<vtkActor2D> actor = vtkSmartPointer<vtkActor2D>::New(); actor->SetPosition(width / 2, height / 2); actor->SetMapper(mapper); mapper->GetTextProperty()->BoldOff();; mapper->GetTextProperty()->SetFontSize(50); mapper->GetTextProperty()->SetColor(1.0, 1.0, 1.0); mapper->GetTextProperty()->SetJustificationToCentered(); mapper->GetTextProperty()->SetVerticalJustificationToCentered(); mapper->GetTextProperty()->SetFontFamily(VTK_FONT_FILE); mapper->GetTextProperty()->SetFontFile(fontFile.c_str()); mapper->SetInput(str.str().c_str()); vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New(); renderer->SetBackground(.5, .6, .7); vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->SetSize(width, height); renderWindow->AddRenderer(renderer); vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); interactor->SetRenderWindow(renderWindow); renderer->AddActor(actor); renderWindow->Render(); interactor->Initialize(); interactor->Start(); return EXIT_SUCCESS; }
CMakeLists.txt¶
cmake_minimum_required(VERSION 3.3 FATAL_ERROR) project(FontFile) find_package(VTK COMPONENTS vtkCommonCore vtkInteractionStyle vtkRenderingCore vtkRenderingFreeType vtkRenderingOpenGL2 QUIET) if (NOT VTK_FOUND) message("Skipping FontFile: ${VTK_NOT_FOUND_MESSAGE}") return () endif() message (STATUS "VTK_VERSION: ${VTK_VERSION}") if (VTK_VERSION VERSION_LESS "8.90.0") # old system include(${VTK_USE_FILE}) add_executable(FontFile MACOSX_BUNDLE FontFile.cxx ) target_link_libraries(FontFile PRIVATE ${VTK_LIBRARIES}) else () # include all components add_executable(FontFile MACOSX_BUNDLE FontFile.cxx ) target_link_libraries(FontFile PRIVATE ${VTK_LIBRARIES}) # vtk_module_autoinit is needed vtk_module_autoinit( TARGETS FontFile MODULES ${VTK_LIBRARIES} ) endif ()
Download and Build FontFile¶
Click here to download FontFile and its CMakeLists.txt file. Once the tarball FontFile.tar has been downloaded and extracted,
cd FontFile/build
If VTK is installed:
cmake ..
If VTK is not installed but compiled on your system, you will need to specify the path to your VTK build:
cmake -DVTK_DIR:PATH=/home/me/vtk_build ..
Build the project:
make
and run it:
./FontFile
WINDOWS USERS
Be sure to add the VTK bin directory to your path. This will resolve the VTK dll's at run time.