From eb6f1f355f3ca5c95d032e77182c31ee8ee33010 Mon Sep 17 00:00:00 2001
From: Otmane Lahlou <otmane.lahlou@c-s.fr>
Date: Mon, 10 Jan 2011 11:45:46 +0100
Subject: [PATCH] ENH : add accessor to font filename and specify it in the
 tests

---
 Code/Common/otbVectorDataToImageFilter.h                   | 7 +++++++
 Code/Common/otbVectorDataToImageFilter.txx                 | 7 +++----
 Testing/Code/Common/CMakeLists.txt                         | 3 +++
 Testing/Code/Common/otbVectorDataToImageFilter.cxx         | 5 +++--
 .../Code/Common/otbVectorDataToImageFilterSensorModel.cxx  | 7 +++++--
 Testing/Code/Common/otbVectorDataToImageFilterWorld.cxx    | 7 +++++--
 6 files changed, 26 insertions(+), 10 deletions(-)

diff --git a/Code/Common/otbVectorDataToImageFilter.h b/Code/Common/otbVectorDataToImageFilter.h
index 6c601d82de..f4e0a429ea 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 b2bdc59406..8eadeb5843 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 3154ff0882..ad08b57847 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 e554918abd..90b5a71b36 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 39ebb2a5c0..d38b669c5a 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 7b1dfaa40a..1cce23ee9b 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");
-- 
GitLab