diff --git a/Code/Common/otbVectorDataToImageFilter.h b/Code/Common/otbVectorDataToImageFilter.h index 6c601d82de22778f02b1210e5ae3be2edf19a28f..f4e0a429ea1cfb20ec6b5cb0f6eb661e3e67be9d 100644 --- a/Code/Common/otbVectorDataToImageFilter.h +++ b/Code/Common/otbVectorDataToImageFilter.h @@ -144,6 +144,10 @@ public: itkSetMacro(RenderingStyleType, RenderingStyleType); itkGetMacro(RenderingStyleType, RenderingStyleType); + /** Add accessors to the font filename */ + itkSetStringMacro(FontFileName); + itkGetStringMacro(FontFileName); + protected: /** Constructor */ VectorDataToImageFilter(); @@ -172,6 +176,9 @@ private: mapnik::Map m_Map; + // font file name + std::string m_FontFileName; + //This factor is used to flip the data on the Y axis when using a //sensor model geometry (where the Y coordinate increases top-down) int m_SensorModelFlip; diff --git a/Code/Common/otbVectorDataToImageFilter.txx b/Code/Common/otbVectorDataToImageFilter.txx index b2bdc59406fc3dff19d7769f683bbf6de7d27980..8eadeb584389cbdcb6992a18fb61ec0238a0b482 100644 --- a/Code/Common/otbVectorDataToImageFilter.txx +++ b/Code/Common/otbVectorDataToImageFilter.txx @@ -209,10 +209,9 @@ VectorDataToImageFilter<TVectorData, TImage> Superclass::BeforeThreadedGenerateData(); -#ifndef WIN32 - mapnik::freetype_engine::register_font("/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf"); -#endif - + if(!m_FontFileName.empty()) + mapnik::freetype_engine::register_font(m_FontFileName); + //Load the OSM styles using helper class otb::VectorDataStyle::Pointer styleLoader = otb::VectorDataStyle::New(); styleLoader->SetScaleFactor(m_ScaleFactor); diff --git a/Testing/Code/Common/CMakeLists.txt b/Testing/Code/Common/CMakeLists.txt index 3154ff08827babd976f2e3c985c231dc9c57c0fb..ad08b578479bebec68f6ac71d36fc35664eb2d6b 100644 --- a/Testing/Code/Common/CMakeLists.txt +++ b/Testing/Code/Common/CMakeLists.txt @@ -788,6 +788,7 @@ ADD_TEST(coTvVectorDataToImageFilter ${COMMON_TESTS9} otbVectorDataToImageFilter ${LARGEINPUT}/VECTOR/MidiPyrenees/roads.shp ${TEMP}/coTvVectorDataToImageFilter.png + ${BASELINE_FILES}/DejaVuSans.ttf # font ) ENDIF(OTB_DATA_USE_LARGEINPUT) @@ -801,6 +802,7 @@ ADD_TEST(coTvVectorDataToImageFilterSensorModel ${COMMON_TESTS9} ${LARGEINPUT}/VECTOR/MidiPyrenees/roads.shp ${LARGEINPUT}/QUICKBIRD/TOULOUSE/000000128955_01_P001_PAN/02APR01105228-P1BS-000000128955_01_P001.TIF ${TEMP}/coTvVectorDataToImageFilterSensorModel.png + ${BASELINE_FILES}/DejaVuSans.ttf # font ) ENDIF(OTB_DATA_USE_LARGEINPUT) @@ -815,6 +817,7 @@ ADD_TEST(coTvVectorDataToImageFilterWorld ${COMMON_TESTS9} 500 500 #Size -20 60 #lon/lat 0.1 -0.1 #spacing lon/lat + ${BASELINE_FILES}/DejaVuSans.ttf # font ) diff --git a/Testing/Code/Common/otbVectorDataToImageFilter.cxx b/Testing/Code/Common/otbVectorDataToImageFilter.cxx index e554918abd97b8413dc0fa90a4f76d50219d34b0..90b5a71b36e1d245bdfaca59ee1a660554941f76 100644 --- a/Testing/Code/Common/otbVectorDataToImageFilter.cxx +++ b/Testing/Code/Common/otbVectorDataToImageFilter.cxx @@ -31,9 +31,9 @@ int otbVectorDataToImageFilter(int argc, char * argv[]) { - if (argc < 3) + if (argc < 4) { - std::cout << argv[0] << " <input vector filename> <input image filename>" << std::endl; + std::cout << argv[0] << " <input vector filename> <input image filename> <font filename>" << std::endl; return EXIT_FAILURE; } @@ -92,6 +92,7 @@ int otbVectorDataToImageFilter(int argc, char * argv[]) vectorDataRendering->SetSize(size); vectorDataRendering->SetOrigin(origin); vectorDataRendering->SetSpacing(spacing); + vectorDataRendering->SetFontFileName(argv[3]); vectorDataRendering->AddStyle("minor-roads-casing"); #ifndef WIN32 vectorDataRendering->AddStyle("roads-text"); diff --git a/Testing/Code/Common/otbVectorDataToImageFilterSensorModel.cxx b/Testing/Code/Common/otbVectorDataToImageFilterSensorModel.cxx index 39ebb2a5c046817201469cbcc8dbb344f69d3efc..d38b669c5a0bd072501536f128cb3fbb49b2c5af 100644 --- a/Testing/Code/Common/otbVectorDataToImageFilterSensorModel.cxx +++ b/Testing/Code/Common/otbVectorDataToImageFilterSensorModel.cxx @@ -32,10 +32,12 @@ int otbVectorDataToImageFilterSensorModel(int argc, char * argv[]) { - if (argc < 4) + if (argc < 5) { std::cout << argv[0] << " <input vector filename> <input image filename>" - << " <output vector filename> " << std::endl; + << " <output vector filename> " + << "<font filename>" + << std::endl; return EXIT_FAILURE; } @@ -93,6 +95,7 @@ int otbVectorDataToImageFilterSensorModel(int argc, char * argv[]) vectorDataRendering->SetSize(size); vectorDataRendering->SetOrigin(origin); vectorDataRendering->SetSpacing(spacing); + vectorDataRendering->SetFontFileName(argv[4]); vectorDataRendering->AddStyle("minor-roads-casing"); #ifndef WIN32 vectorDataRendering->AddStyle("roads-text"); diff --git a/Testing/Code/Common/otbVectorDataToImageFilterWorld.cxx b/Testing/Code/Common/otbVectorDataToImageFilterWorld.cxx index 7b1dfaa40abd8609f35b7a614b4f159dca78329b..1cce23ee9b7af5c0c7fd410dafad9e67a303e343 100644 --- a/Testing/Code/Common/otbVectorDataToImageFilterWorld.cxx +++ b/Testing/Code/Common/otbVectorDataToImageFilterWorld.cxx @@ -31,13 +31,15 @@ int otbVectorDataToImageFilterWorld(int argc, char * argv[]) { - if (argc < 10) + if (argc < 11) { std::cout << argv[0] << " <input vector filename> <input image filename>" << " <output vector filename> " << " <sizeX> <sizeY> " << " <origin lon> <origin lat> " - << " <spacing lon> <spacing lat> " << std::endl; + << " <spacing lon> <spacing lat> " + << " <font filename>" + << std::endl; return EXIT_FAILURE; } @@ -82,6 +84,7 @@ int otbVectorDataToImageFilterWorld(int argc, char * argv[]) vectorDataRendering->SetSize(size); vectorDataRendering->SetOrigin(origin); vectorDataRendering->SetSpacing(spacing); + vectorDataRendering->SetFontFileName(argv[10]); vectorDataRendering->AddStyle("world"); #ifndef WIN32 vectorDataRendering->AddStyle("city");