Fix for PreInitialize, including FontClient
[platform/core/uifw/dali-adaptor.git] / dali / internal / text / text-abstraction / font-client-impl.cpp
index c952506..4e82a54 100755 (executable)
 #include <dali/internal/text/text-abstraction/font-client-impl.h>
 
 // EXTERNAL INCLUDES
-#ifndef DALI_PROFILE_UBUNTU
+#if !(defined(DALI_PROFILE_UBUNTU) || defined(ANDROID) || defined(WIN32))
 #include <vconf.h>
 #endif
 
 // INTERNAL INCLUDES
-#include <dali/devel-api/adaptor-framework/singleton-service.h>
+#include <dali/devel-api/common/singleton-service.h>
 #include <dali/internal/text/text-abstraction/font-client-plugin-impl.h>
 
+#include <dali/devel-api/text-abstraction/glyph-info.h>
+
 namespace Dali
 {
 
@@ -36,6 +38,8 @@ namespace TextAbstraction
 namespace Internal
 {
 
+Dali::TextAbstraction::FontClient FontClient::gPreInitializedFontClient( NULL );
+
 FontClient::FontClient()
 : mPlugin( nullptr ),
   mDpiHorizontal( 0 ),
@@ -65,7 +69,16 @@ Dali::TextAbstraction::FontClient FontClient::Get()
     }
     else // create and register the object
     {
-      fontClientHandle = Dali::TextAbstraction::FontClient( new FontClient );
+      if( gPreInitializedFontClient )
+      {
+        fontClientHandle = gPreInitializedFontClient;
+        gPreInitializedFontClient.Reset(); // No longer needed
+      }
+      else
+      {
+        fontClientHandle = Dali::TextAbstraction::FontClient( new FontClient );
+      }
+
       service.Register( typeid( fontClientHandle ), fontClientHandle );
     }
   }
@@ -73,6 +86,17 @@ Dali::TextAbstraction::FontClient FontClient::Get()
   return fontClientHandle;
 }
 
+Dali::TextAbstraction::FontClient FontClient::PreInitialize()
+{
+  gPreInitializedFontClient = Dali::TextAbstraction::FontClient( new FontClient );
+
+  // Make DefaultFontDescription cached
+  Dali::TextAbstraction::FontDescription defaultFontDescription;
+  gPreInitializedFontClient.GetDefaultPlatformFontDescription( defaultFontDescription );
+
+  return gPreInitializedFontClient;
+}
+
 void FontClient::ClearCache()
 {
   if( mPlugin )
@@ -104,9 +128,9 @@ int FontClient::GetDefaultFontSize()
 {
   int fontSize( -1 );
 
-#ifndef DALI_PROFILE_UBUNTU
+#if !(defined(DALI_PROFILE_UBUNTU) || defined(ANDROID) || defined(WIN32))
   vconf_get_int( VCONFKEY_SETAPPL_ACCESSIBILITY_FONT_SIZE, &fontSize );
-#endif // DALI_PROFILE_UBUNTU
+#endif
 
   return fontSize;
 }
@@ -219,7 +243,6 @@ bool FontClient::HasItalicStyle( FontId fontId ) const
   {
     return false;
   }
-
   return mPlugin->HasItalicStyle( fontId );
 }