Make FontClient::New() for async text load 03/289603/4
authorEunki, Hong <eunkiki.hong@samsung.com>
Fri, 10 Mar 2023 07:33:13 +0000 (16:33 +0900)
committerEunki Hong <eunkiki.hong@samsung.com>
Wed, 26 Apr 2023 05:19:04 +0000 (05:19 +0000)
Since we may need to use some new FontClient API that might not
used on EventThread case.

DaliHandle itself can be created at worker thread. So we need to
prepare of this usecase.

TODO : FontClient might not be thread-safe. We need to check it

Change-Id: I768bf48314fb8f66548205744d3df4f19bacefcd
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
automated-tests/src/dali-adaptor-internal/utc-Dali-FontClient.cpp
dali/devel-api/text-abstraction/font-client.cpp
dali/devel-api/text-abstraction/font-client.h

index a02925d..e8d8fdc 100644 (file)
@@ -90,6 +90,31 @@ int UtcDaliFontClient(void)
   END_TEST;
 }
 
+int UtcDaliFontClientNew(void)
+{
+  TestApplication application;
+
+  TextAbstraction::FontClient fontClient = TextAbstraction::FontClient::Get();
+  fontClient.SetDpi(30, 40);
+  TextAbstraction::FontClient anotherClient = TextAbstraction::FontClient::New(50, 60);
+
+  uint32_t horizontalDpi;
+  uint32_t verticalDpi;
+
+  tet_printf("Check default font client set dpi well\n");
+  fontClient.GetDpi(horizontalDpi, verticalDpi);
+
+  DALI_TEST_EQUALS(30, horizontalDpi, TEST_LOCATION);
+  DALI_TEST_EQUALS(40, verticalDpi, TEST_LOCATION);
+
+  tet_printf("Check another font client set dpi well\n");
+  anotherClient.GetDpi(horizontalDpi, verticalDpi);
+
+  DALI_TEST_EQUALS(50, horizontalDpi, TEST_LOCATION);
+  DALI_TEST_EQUALS(60, verticalDpi, TEST_LOCATION);
+
+  END_TEST;
+}
 int UtcDaliFontClientAtlasLimitation(void)
 {
   TestApplication             application;
index 03260d3..133b1ad 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -57,6 +57,15 @@ FontClient FontClient::Get()
   return Internal::FontClient::Get();
 }
 
+FontClient FontClient::New(uint32_t horizontalDpi, uint32_t verticalDpi)
+{
+  auto fontClientImpl = new Internal::FontClient();
+
+  fontClientImpl->SetDpi(horizontalDpi, verticalDpi);
+
+  return FontClient(fontClientImpl);
+}
+
 FontClient::FontClient()
 {
 }
index 963e4cc..e265c80 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_PLATFORM_TEXT_ABSTRACTION_FONT_CLIENT_H
 
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -99,6 +99,15 @@ public:
   static FontClient Get();
 
   /**
+   * @brief Create a handle to the new FontClient instance.
+   *
+   * @param[in] horizontalDpi The horizontal resolution in DPI.
+   * @param[in] verticalDpi The vertical resolution in DPI.
+   * @return A handle to the FontClient
+   */
+  static FontClient New(uint32_t horizontalDpi, uint32_t verticalDpi);
+
+  /**
    * @brief Create an uninitialized TextAbstraction handle.
    */
   FontClient();