Merge branch 'devel/master' into tizen accepted/tizen/unified/20230126.170116
authorTaehyub Kim <taehyub.kim@samsung.com>
Wed, 25 Jan 2023 05:50:36 +0000 (14:50 +0900)
committerTaehyub Kim <taehyub.kim@samsung.com>
Wed, 25 Jan 2023 05:50:36 +0000 (14:50 +0900)
Change-Id: I7ebaf03246e4bcf052f4fff9f91021f4c987b85f

104 files changed:
automated-tests/resources/exercise/Icons/Icon_Idle.png
automated-tests/resources/exercise/Icons/Icon_JJ.png
automated-tests/resources/exercise/Icons/Icon_Lunge.png
automated-tests/resources/exercise/Icons/Icon_Squat.png
automated-tests/resources/exercise/Textures/BG_AlbedoMetallic.png
automated-tests/resources/exercise/Textures/BG_NormalRoughness.png
automated-tests/resources/exercise/Textures/Body_AlbedoMetallic.png
automated-tests/resources/exercise/Textures/Body_Female_Asian_Adult_SubsurfaceColor.png
automated-tests/resources/exercise/Textures/Body_NormalRoughness.png
automated-tests/resources/exercise/Textures/Eye_AlbedoMetallic.png
automated-tests/resources/exercise/Textures/Eye_NormalRoughness.png
automated-tests/resources/exercise/Textures/FitBot_AlbedoMetallic.png
automated-tests/resources/exercise/Textures/FitBot_NormalRoughness.png
automated-tests/resources/exercise/Textures/FitTop_AlbedoMetallic.png
automated-tests/resources/exercise/Textures/FitTop_NormalRoughness.png
automated-tests/resources/exercise/Textures/Hair_AlbedoMetallic.png
automated-tests/resources/exercise/Textures/Hair_NormalRoughness.png
automated-tests/resources/exercise/Textures/Head_AlbedoMetallic.png
automated-tests/resources/exercise/Textures/Head_Female_SubsurfaceColor.png
automated-tests/resources/exercise/Textures/Head_NormalRoughness.png
automated-tests/resources/exercise/Textures/Shoe_AlbedoMetallic.png
automated-tests/resources/exercise/Textures/Shoe_NormalRoughness.png
automated-tests/resources/folder_appicon_empty_bg.png
automated-tests/resources/gallery-small-1.jpg
automated-tests/resources/selection_handle_drop_left.png
automated-tests/resources/selection_handle_drop_right.png
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-harness.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-harness.h
dali-scene3d/public-api/loader/gltf2-loader.cpp
dali-scene3d/public-api/loader/mesh-definition.cpp
dali-scene3d/public-api/loader/mesh-definition.h
dali-toolkit/devel-api/text/spans/background-color-span.cpp
dali-toolkit/devel-api/text/spans/background-color-span.h
dali-toolkit/devel-api/text/spans/base-span.cpp
dali-toolkit/devel-api/text/spans/base-span.h
dali-toolkit/devel-api/text/spans/character-spacing-span.cpp
dali-toolkit/devel-api/text/spans/character-spacing-span.h
dali-toolkit/devel-api/text/spans/font-span.cpp
dali-toolkit/devel-api/text/spans/font-span.h
dali-toolkit/devel-api/text/spans/foreground-color-span.cpp
dali-toolkit/devel-api/text/spans/foreground-color-span.h
dali-toolkit/devel-api/text/spans/span-enumerations.h
dali-toolkit/devel-api/text/spans/strikethrough-span.cpp
dali-toolkit/devel-api/text/spans/strikethrough-span.h
dali-toolkit/devel-api/text/spans/underline-span.cpp
dali-toolkit/devel-api/text/spans/underline-span.h
dali-toolkit/internal/controls/gl-view/drawable-view-native-renderer.cpp
dali-toolkit/internal/text/controller/text-controller.h
dali-toolkit/internal/text/spannable/spans/background-color-span-impl.cpp
dali-toolkit/internal/text/spannable/spans/background-color-span-impl.h
dali-toolkit/internal/text/spannable/spans/base-span-impl.cpp
dali-toolkit/internal/text/spannable/spans/base-span-impl.h
dali-toolkit/internal/text/spannable/spans/character-spacing-span-impl.cpp
dali-toolkit/internal/text/spannable/spans/character-spacing-span-impl.h
dali-toolkit/internal/text/spannable/spans/font-span-impl.cpp
dali-toolkit/internal/text/spannable/spans/font-span-impl.h
dali-toolkit/internal/text/spannable/spans/foreground-color-span-impl.cpp
dali-toolkit/internal/text/spannable/spans/foreground-color-span-impl.h
dali-toolkit/internal/text/spannable/spans/strikethrough-span-impl.cpp
dali-toolkit/internal/text/spannable/spans/strikethrough-span-impl.h
dali-toolkit/internal/text/spannable/spans/underline-span-impl.cpp
dali-toolkit/internal/text/spannable/spans/underline-span-impl.h
dali-toolkit/public-api/dali-toolkit-version.cpp
dali-toolkit/styles/360x360/images/cursor_handler_drop_center.png
dali-toolkit/styles/360x360/images/selection_handle_drop_left.png
dali-toolkit/styles/360x360/images/selection_handle_drop_right.png
dali-toolkit/styles/360x360/images/tw_bottom_btn_bg.png [changed mode: 0755->0644]
dali-toolkit/styles/480x800/images/cursor_handler_drop_center.png
dali-toolkit/styles/480x800/images/selection_handle_drop_left.png
dali-toolkit/styles/480x800/images/selection_handle_drop_right.png
dali-toolkit/styles/720x1280/images/cursor_handler_drop_center.png
dali-toolkit/styles/720x1280/images/selection_handle_drop_left.png
dali-toolkit/styles/720x1280/images/selection_handle_drop_right.png
dali-toolkit/styles/images-common/00_popup_bg.png
dali-toolkit/styles/images-common/00_popup_bottom_bg.png [changed mode: 0755->0644]
dali-toolkit/styles/images-common/00_popup_bubble_bg.png [changed mode: 0755->0644]
dali-toolkit/styles/images-common/00_popup_bubble_tail_bottom.png [changed mode: 0755->0644]
dali-toolkit/styles/images-common/00_popup_button_bg.png
dali-toolkit/styles/images-common/copy_paste_icon_cut.png
dali-toolkit/styles/images-common/insertpoint-icon-pressed.png
dali-toolkit/styles/images-common/insertpoint-icon.png
dali-toolkit/styles/images-common/keyboard_focus.9.png
dali-toolkit/styles/images-common/magnifier.png
dali-toolkit/styles/images-common/popup_bg.png
dali-toolkit/styles/images-common/popup_bubble_bg_ef.#.png
dali-toolkit/styles/images-common/popup_bubble_tail_bottom_ef.png
dali-toolkit/styles/images-common/popup_bubble_tail_top_ef.png [changed mode: 0755->0644]
dali-toolkit/styles/images-common/popup_tail_down.png [changed mode: 0755->0644]
dali-toolkit/styles/images-common/popup_tail_left.png
dali-toolkit/styles/images-common/popup_tail_right.png
dali-toolkit/styles/images-common/popup_tail_up.png
dali-toolkit/styles/images-common/slider-popup-arrow.png
dali-toolkit/styles/images-common/slider-skin-handle.png
dali-toolkit/styles/images-common/text-input-selection-handle-left.png
dali-toolkit/styles/images-common/text-input-selection-handle-right.png
dali-toolkit/styles/images-common/tooltip-tail-above.png
dali-toolkit/styles/images-common/tooltip-tail-below.png
docs/content/example-code/images/cards.jpg
docs/content/figures/image-scaling/cards.jpg
docs/content/figures/image-scaling/dog.jpg
docs/content/figures/image-scaling/door.jpg
docs/content/figures/image-scaling/gallery-large-12.jpg
docs/content/figures/image-scaling/liberty.jpg
packaging/dali-toolkit.spec

index ee10734..e35c237 100644 (file)
Binary files a/automated-tests/resources/exercise/Icons/Icon_Idle.png and b/automated-tests/resources/exercise/Icons/Icon_Idle.png differ
index 1c690f5..29fdc59 100644 (file)
Binary files a/automated-tests/resources/exercise/Icons/Icon_JJ.png and b/automated-tests/resources/exercise/Icons/Icon_JJ.png differ
index 8853b14..3bc6b76 100644 (file)
Binary files a/automated-tests/resources/exercise/Icons/Icon_Lunge.png and b/automated-tests/resources/exercise/Icons/Icon_Lunge.png differ
index f4f8ce3..eeaf545 100644 (file)
Binary files a/automated-tests/resources/exercise/Icons/Icon_Squat.png and b/automated-tests/resources/exercise/Icons/Icon_Squat.png differ
index 45489d2..e272439 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/BG_AlbedoMetallic.png and b/automated-tests/resources/exercise/Textures/BG_AlbedoMetallic.png differ
index 52cb66d..0cf17ba 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/BG_NormalRoughness.png and b/automated-tests/resources/exercise/Textures/BG_NormalRoughness.png differ
index d8211a6..ff5a87a 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Body_AlbedoMetallic.png and b/automated-tests/resources/exercise/Textures/Body_AlbedoMetallic.png differ
index 8df1878..3d42031 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Body_Female_Asian_Adult_SubsurfaceColor.png and b/automated-tests/resources/exercise/Textures/Body_Female_Asian_Adult_SubsurfaceColor.png differ
index 91d02cb..1d821ec 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Body_NormalRoughness.png and b/automated-tests/resources/exercise/Textures/Body_NormalRoughness.png differ
index 0137f24..098bf8a 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Eye_AlbedoMetallic.png and b/automated-tests/resources/exercise/Textures/Eye_AlbedoMetallic.png differ
index 9d5971b..cf3534a 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Eye_NormalRoughness.png and b/automated-tests/resources/exercise/Textures/Eye_NormalRoughness.png differ
index d70a3de..0cfd10a 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/FitBot_AlbedoMetallic.png and b/automated-tests/resources/exercise/Textures/FitBot_AlbedoMetallic.png differ
index fd47924..7876077 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/FitBot_NormalRoughness.png and b/automated-tests/resources/exercise/Textures/FitBot_NormalRoughness.png differ
index f19e93c..2d7cc89 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/FitTop_AlbedoMetallic.png and b/automated-tests/resources/exercise/Textures/FitTop_AlbedoMetallic.png differ
index 6c3e743..67b1c2b 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/FitTop_NormalRoughness.png and b/automated-tests/resources/exercise/Textures/FitTop_NormalRoughness.png differ
index 8b96834..24ba82f 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Hair_AlbedoMetallic.png and b/automated-tests/resources/exercise/Textures/Hair_AlbedoMetallic.png differ
index 9d643ab..23c6eb7 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Hair_NormalRoughness.png and b/automated-tests/resources/exercise/Textures/Hair_NormalRoughness.png differ
index 568a115..6e20431 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Head_AlbedoMetallic.png and b/automated-tests/resources/exercise/Textures/Head_AlbedoMetallic.png differ
index 609ce5b..0f8caa3 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Head_Female_SubsurfaceColor.png and b/automated-tests/resources/exercise/Textures/Head_Female_SubsurfaceColor.png differ
index b2eb952..fc9fec4 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Head_NormalRoughness.png and b/automated-tests/resources/exercise/Textures/Head_NormalRoughness.png differ
index 6bf07f9..d9b0664 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Shoe_AlbedoMetallic.png and b/automated-tests/resources/exercise/Textures/Shoe_AlbedoMetallic.png differ
index f953ec0..a038345 100644 (file)
Binary files a/automated-tests/resources/exercise/Textures/Shoe_NormalRoughness.png and b/automated-tests/resources/exercise/Textures/Shoe_NormalRoughness.png differ
index 32a47a5..b401e49 100644 (file)
Binary files a/automated-tests/resources/folder_appicon_empty_bg.png and b/automated-tests/resources/folder_appicon_empty_bg.png differ
index 9292310..cac624f 100644 (file)
Binary files a/automated-tests/resources/gallery-small-1.jpg and b/automated-tests/resources/gallery-small-1.jpg differ
index d9ed8b8..72bf805 100644 (file)
Binary files a/automated-tests/resources/selection_handle_drop_left.png and b/automated-tests/resources/selection_handle_drop_left.png differ
index f66b26b..6901e85 100644 (file)
Binary files a/automated-tests/resources/selection_handle_drop_right.png and b/automated-tests/resources/selection_handle_drop_right.png differ
index 86874fd..31080a4 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.
@@ -122,6 +122,18 @@ std::string TestModuleName(const char* processName)
   return oss.str();
 }
 
+std::string GetWChan(int pid)
+{
+  std::ostringstream procwchan;
+  procwchan << "/proc/" << pid << "/wchan";
+  std::ifstream ifs;
+  ifs.open(procwchan.str(), std::ifstream::in);
+  std::string line;
+  std::getline(ifs, line);
+  ifs.close();
+  return line;
+}
+
 std::string ReadAndEscape(std::string filename)
 {
   std::ostringstream os;
@@ -496,11 +508,17 @@ int32_t RunAllInParallel(const char* processName, ::testcase tc_array[], std::st
       for(auto& tc : children)
       {
         std::chrono::steady_clock::duration timeSpan = endTime - tc.second.startTime;
-        std::chrono::duration<double>       seconds  = std::chrono::duration_cast<std::chrono::duration<double>>(timeSpan);
-        if(seconds.count() > MAXIMUM_CHILD_LIFETIME)
+        double                              seconds  = double(timeSpan.count()) * std::chrono::steady_clock::period::num / std::chrono::steady_clock::period::den;
+
+        if(seconds > MAXIMUM_CHILD_LIFETIME)
         {
           // Kill the child process. A subsequent call to waitpid will process signal result below.
-          kill(tc.first, SIGKILL);
+          if(!tc.second.finished)
+          {
+            printf("Child process %s WCHAN:%s\n", tc.second.name, GetWChan(tc.first).c_str());
+            kill(tc.first, SIGKILL);
+            tc.second.finished = true; // Only send kill signal once.
+          }
         }
       }
     }
@@ -513,8 +531,9 @@ int32_t RunAllInParallel(const char* processName, ::testcase tc_array[], std::st
     {
       if(WIFEXITED(status))
       {
-        auto& testCase  = children[childPid];
-        testCase.result = WEXITSTATUS(status);
+        auto& testCase    = children[childPid];
+        testCase.result   = WEXITSTATUS(status);
+        testCase.finished = true;
         if(testCase.result)
         {
           printf("Test case %s failed: %d\n", testCase.name, testCase.result);
@@ -535,6 +554,7 @@ int32_t RunAllInParallel(const char* processName, ::testcase tc_array[], std::st
         RunningTestCases::iterator iter = children.find(childPid);
         if(iter != children.end())
         {
+          iter->second.finished = true;
           printf("Test case %s exited with signal %s\n", iter->second.name, strsignal(status));
           iter->second.result = 1;
           failedTestCases.push_back(iter->second.testCase);
index 554846f..e884c64 100644 (file)
@@ -2,7 +2,7 @@
 #define TEST_HARNESS_H
 
 /*
- * Copyright (c) 2020 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.
@@ -44,9 +44,10 @@ struct TestCase
   const char*                           name;
   std::chrono::steady_clock::time_point startTime;
   std::chrono::system_clock::time_point startSystemTime;
-  int32_t                               result;
+  int32_t                               result{0};
   pid_t                                 childPid{0};
   testcase*                             tctPtr;
+  bool                                  finished{false};
 
   TestCase(int32_t index, testcase* testCase)
   : testCase(index),
index 6d209d2..90002b3 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.
@@ -426,9 +426,9 @@ SamplerFlags::Type ConvertSampler(const gt::Ref<gt::Sampler>& s)
 {
   if(s)
   {
-    return ((s->mMinFilter < gt::Filter::NEAREST_MIPMAP_NEAREST) ? (s->mMinFilter - gt::Filter::NEAREST) : ((s->mMinFilter - gt::Filter::NEAREST_MIPMAP_NEAREST) + 2)) | 
-           ((s->mMagFilter - gt::Filter::NEAREST) << SamplerFlags::FILTER_MAG_SHIFT) | 
-           (ConvertWrapMode(s->mWrapS) << SamplerFlags::WRAP_S_SHIFT) | 
+    return ((s->mMinFilter < gt::Filter::NEAREST_MIPMAP_NEAREST) ? (s->mMinFilter - gt::Filter::NEAREST) : ((s->mMinFilter - gt::Filter::NEAREST_MIPMAP_NEAREST) + 2)) |
+           ((s->mMagFilter - gt::Filter::NEAREST) << SamplerFlags::FILTER_MAG_SHIFT) |
+           (ConvertWrapMode(s->mWrapS) << SamplerFlags::WRAP_S_SHIFT) |
            (ConvertWrapMode(s->mWrapT) << SamplerFlags::WRAP_T_SHIFT);
   }
   else
@@ -670,7 +670,8 @@ void ConvertMeshes(const gt::Document& doc, ConversionContext& context)
           if(iFind->first == gt::Attribute::JOINTS_0)
           {
             meshDefinition.mFlags |= (iFind->second->mComponentType == gt::Component::UNSIGNED_SHORT) * MeshDefinition::U16_JOINT_IDS;
-            DALI_ASSERT_DEBUG(MaskMatch(meshDefinition.mFlags, MeshDefinition::U16_JOINT_IDS) || iFind->second->mComponentType == gt::Component::FLOAT);
+            meshDefinition.mFlags |= (iFind->second->mComponentType == gt::Component::UNSIGNED_BYTE) * MeshDefinition::U8_JOINT_IDS;
+            DALI_ASSERT_DEBUG(MaskMatch(meshDefinition.mFlags, MeshDefinition::U16_JOINT_IDS) || MaskMatch(meshDefinition.mFlags, MeshDefinition::U8_JOINT_IDS) || iFind->second->mComponentType == gt::Component::FLOAT);
           }
         }
         else if(needNormalsTangents)
@@ -954,7 +955,7 @@ float LoadKeyFrames(const std::string& path, const gt::Animation::Channel& chann
   Vector<float> inputDataBuffer;
   Vector<T>     outputDataBuffer;
 
-  const float duration = LoadDataFromAccessors<T>(path, input, output, inputDataBuffer, outputDataBuffer);
+  const float duration = std::max(LoadDataFromAccessors<T>(path, input, output, inputDataBuffer, outputDataBuffer), AnimationDefinition::MIN_DURATION_SECONDS);
 
   for(uint32_t i = 0; i < input.mCount; ++i)
   {
@@ -1030,8 +1031,8 @@ void ConvertAnimations(const gt::Document& doc, ConversionContext& context)
     Index propertyIndex = 0u;
     for(const auto& channel : animation.mChannels)
     {
-      Index nodeIndex    = context.mNodeIndices.GetRuntimeId(channel.mTarget.mNode.GetIndex());
-      float duration = 0.f;
+      Index nodeIndex = context.mNodeIndices.GetRuntimeId(channel.mTarget.mNode.GetIndex());
+      float duration  = 0.f;
 
       switch(channel.mTarget.mPath)
       {
index 5c9655a..35835b9 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.
@@ -31,8 +31,6 @@ namespace Loader
 {
 namespace
 {
-using Uint16Vector4 = uint16_t[4];
-
 class IndexProvider
 {
 public:
@@ -175,6 +173,40 @@ bool ReadAccessor(const MeshDefinition::Accessor& accessor, std::istream& source
   return success;
 }
 
+template<typename T>
+void ReadJointAccessor(MeshDefinition::RawData& raw, const MeshDefinition::Accessor& accessor, std::ifstream& binFile, const std::string& meshPath)
+{
+  constexpr auto sizeofBlobUnit = sizeof(T) * 4;
+
+  DALI_ASSERT_ALWAYS(((accessor.mBlob.mLength % sizeofBlobUnit == 0) ||
+                      accessor.mBlob.mStride >= sizeofBlobUnit) &&
+                     "Joints buffer length not a multiple of element size");
+  const auto inBufferSize  = accessor.mBlob.GetBufferSize();
+  const auto outBufferSize = (sizeof(Vector4) / sizeofBlobUnit) * inBufferSize;
+
+  std::vector<uint8_t> buffer(outBufferSize);
+  auto                 inBuffer = buffer.data() + outBufferSize - inBufferSize;
+  if(!ReadAccessor(accessor, binFile, inBuffer))
+  {
+    ExceptionFlinger(ASSERT_LOCATION) << "Failed to read joints from '" << meshPath << "'.";
+  }
+
+  if constexpr(sizeofBlobUnit != sizeof(Vector4))
+  {
+    auto       floats = reinterpret_cast<float*>(buffer.data());
+    const auto end    = inBuffer + inBufferSize;
+    while(inBuffer != end)
+    {
+      const auto value = *reinterpret_cast<T*>(inBuffer);
+      *floats          = static_cast<float>(value);
+
+      inBuffer += sizeof(T);
+      ++floats;
+    }
+  }
+  raw.mAttribs.push_back({"aJoints", Property::VECTOR4, static_cast<uint32_t>(outBufferSize / sizeof(Vector4)), std::move(buffer)});
+}
+
 void GenerateNormals(MeshDefinition::RawData& raw)
 {
   auto& attribs = raw.mAttribs;
@@ -773,42 +805,15 @@ MeshDefinition::LoadRaw(const std::string& modelsPath)
   {
     if(MaskMatch(mFlags, U16_JOINT_IDS))
     {
-      DALI_ASSERT_ALWAYS(((mJoints0.mBlob.mLength % sizeof(Uint16Vector4) == 0) ||
-                          mJoints0.mBlob.mStride >= sizeof(Uint16Vector4)) &&
-                         "Joints buffer length not a multiple of element size");
-      const auto           inBufferSize = mJoints0.mBlob.GetBufferSize();
-      std::vector<uint8_t> buffer(inBufferSize * 2);
-      auto                 u16s = buffer.data() + inBufferSize;
-      if(!ReadAccessor(mJoints0, binFile, u16s))
-      {
-        ExceptionFlinger(ASSERT_LOCATION) << "Failed to read joints from '" << meshPath << "'.";
-      }
-
-      auto floats = reinterpret_cast<float*>(buffer.data());
-      auto end    = u16s + inBufferSize;
-      while(u16s != end)
-      {
-        auto value = *reinterpret_cast<uint16_t*>(u16s);
-        *floats    = static_cast<float>(value);
-
-        u16s += sizeof(uint16_t);
-        ++floats;
-      }
-      raw.mAttribs.push_back({"aJoints", Property::VECTOR4, static_cast<uint32_t>(buffer.size() / sizeof(Vector4)), std::move(buffer)});
+      ReadJointAccessor<uint16_t>(raw, mJoints0, binFile, meshPath);
+    }
+    else if(MaskMatch(mFlags, U8_JOINT_IDS))
+    {
+      ReadJointAccessor<uint8_t>(raw, mJoints0, binFile, meshPath);
     }
     else
     {
-      DALI_ASSERT_ALWAYS(((mJoints0.mBlob.mLength % sizeof(Vector4) == 0) ||
-                          mJoints0.mBlob.mStride >= sizeof(Vector4)) &&
-                         "Joints buffer length not a multiple of element size");
-      const auto           bufferSize = mJoints0.mBlob.GetBufferSize();
-      std::vector<uint8_t> buffer(bufferSize);
-      if(!ReadAccessor(mJoints0, binFile, buffer.data()))
-      {
-        ExceptionFlinger(ASSERT_LOCATION) << "Failed to read joints from '" << meshPath << "'.";
-      }
-
-      raw.mAttribs.push_back({"aJoints", Property::VECTOR4, static_cast<uint32_t>(bufferSize / sizeof(Vector4)), std::move(buffer)});
+      ReadJointAccessor<float>(raw, mJoints0, binFile, meshPath);
     }
 
     DALI_ASSERT_ALWAYS(((mWeights0.mBlob.mLength % sizeof(Vector4) == 0) ||
index 1030c7c..4e72719 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef DALI_SCENE3D_LOADER_MESH_DEFINITION_H
 #define DALI_SCENE3D_LOADER_MESH_DEFINITION_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.
@@ -53,6 +53,7 @@ struct DALI_SCENE3D_API MeshDefinition
     FLIP_UVS_VERTICAL = NthBit(0),
     U32_INDICES       = NthBit(1), // default is unsigned short
     U16_JOINT_IDS     = NthBit(2), // default is floats
+    U8_JOINT_IDS      = NthBit(3),
   };
 
   enum Attributes
index 30972d5..c7a5d04 100644 (file)
@@ -50,7 +50,7 @@ BackgroundColorSpan& BackgroundColorSpan::operator=(BackgroundColorSpan&& rhs) =
 BackgroundColorSpan::~BackgroundColorSpan() = default;
 
 //Methods
-const Vector4 BackgroundColorSpan::GetBackgroundColor() const
+Vector4 BackgroundColorSpan::GetBackgroundColor() const
 {
   return GetImplementation(*this).GetBackgroundColor();
 }
index 951692c..10c56dd 100644 (file)
@@ -101,7 +101,7 @@ public: //Methods
    *
    * @return A background-color value.
    */
-  const Vector4 GetBackgroundColor() const;
+  Vector4 GetBackgroundColor() const;
 
   /**
    * @brief Retrieve whether the background-color is defined.
index 47b09a1..0781390 100644 (file)
@@ -49,7 +49,7 @@ BaseSpan BaseSpan::DownCast(BaseHandle handle)
   return BaseSpan(dynamic_cast<Dali::Toolkit::Text::Internal::BaseSpan*>(handle.GetObjectPtr()));
 }
 
-const Dali::Toolkit::Text::SpanType::Value BaseSpan::GetSpanType() const
+Dali::Toolkit::Text::SpanType::Value BaseSpan::GetSpanType() const
 {
   return GetImplementation(*this).GetSpanType();
 }
index 8757820..e3f7f29 100644 (file)
@@ -96,7 +96,7 @@ public:
    *
    * @return A span type value.
    */
-  const Dali::Toolkit::Text::SpanType::Value GetSpanType() const;
+  Dali::Toolkit::Text::SpanType::Value GetSpanType() const;
 
   /**
    * @brief Downcasts to a BaseSpan handle.
index 2383140..1e8b306 100644 (file)
@@ -50,7 +50,7 @@ CharacterSpacingSpan& CharacterSpacingSpan::operator=(CharacterSpacingSpan&& rhs
 CharacterSpacingSpan::~CharacterSpacingSpan() = default;
 
 //Methods
-const float CharacterSpacingSpan::GetCharacterSpacing() const
+float CharacterSpacingSpan::GetCharacterSpacing() const
 {
   return GetImplementation(*this).GetCharacterSpacing();
 }
index 8d59b3f..768f0cf 100644 (file)
@@ -100,7 +100,7 @@ public: //Methods
    *
    * @return A CharacterSpacing value.
    */
-  const float GetCharacterSpacing() const;
+  float GetCharacterSpacing() const;
 
   /**
    * @brief Retrieve whether the CharacterSpacing is defined.
index a0eb945..6300224 100644 (file)
@@ -64,7 +64,7 @@ bool FontSpan::IsFamilyNameDefined() const
   return GetImplementation(*this).IsFamilyNameDefined();
 }
 
-const Dali::TextAbstraction::FontWeight::Type FontSpan::GetWeight() const
+Dali::TextAbstraction::FontWeight::Type FontSpan::GetWeight() const
 {
   return GetImplementation(*this).GetWeight();
 }
@@ -74,7 +74,7 @@ bool FontSpan::IsWeightDefined() const
   return GetImplementation(*this).IsWeightDefined();
 }
 
-const Dali::TextAbstraction::FontWidth::Type FontSpan::GetWidth() const
+Dali::TextAbstraction::FontWidth::Type FontSpan::GetWidth() const
 {
   return GetImplementation(*this).GetWidth();
 }
@@ -84,7 +84,7 @@ bool FontSpan::IsWidthDefined() const
   return GetImplementation(*this).IsWidthDefined();
 }
 
-const Dali::TextAbstraction::FontSlant::Type FontSpan::GetSlant() const
+Dali::TextAbstraction::FontSlant::Type FontSpan::GetSlant() const
 {
   return GetImplementation(*this).GetSlant();
 }
@@ -94,7 +94,7 @@ bool FontSpan::IsSlantDefined() const
   return GetImplementation(*this).IsSlantDefined();
 }
 
-const float FontSpan::GetSize() const
+float FontSpan::GetSize() const
 {
   return GetImplementation(*this).GetSize();
 }
index 6a98c5d..7b241ed 100644 (file)
@@ -118,28 +118,28 @@ public: //Methods
    *
    * @return A font weight value.
    */
-  const Dali::TextAbstraction::FontWeight::Type GetWeight() const;
+  Dali::TextAbstraction::FontWeight::Type GetWeight() const;
 
   /**
    * @brief Retrive the font width.
    *
    * @return A font width value.
    */
-  const Dali::TextAbstraction::FontWidth::Type GetWidth() const;
+  Dali::TextAbstraction::FontWidth::Type GetWidth() const;
 
   /**
    * @brief Retrive the font slant.
    *
    * @return A font slant value.
    */
-  const Dali::TextAbstraction::FontSlant::Type GetSlant() const;
+  Dali::TextAbstraction::FontSlant::Type GetSlant() const;
 
   /**
    * @brief Retrive the font size.
    *
    * @return A font size value.
    */
-  const float GetSize() const;
+  float GetSize() const;
 
   /**
    * @brief Retrieve whether the font family name is defined.
index a774737..8c2b395 100644 (file)
@@ -50,7 +50,7 @@ ForegroundColorSpan& ForegroundColorSpan::operator=(ForegroundColorSpan&& rhs) =
 ForegroundColorSpan::~ForegroundColorSpan() = default;
 
 //Methods
-const Vector4 ForegroundColorSpan::GetForegroundColor() const
+Vector4 ForegroundColorSpan::GetForegroundColor() const
 {
   return GetImplementation(*this).GetForegroundColor();
 }
index f6f8c37..f1e042b 100644 (file)
@@ -101,7 +101,7 @@ public: //Methods
    *
    * @return A foreground-color value.
    */
-  const Vector4 GetForegroundColor() const;
+  Vector4 GetForegroundColor() const;
 
   /**
    * @brief Retrieve whether the foreground-color is defined.
index 37a2bca..d77c265 100644 (file)
@@ -32,7 +32,7 @@ namespace SpanType
 /**
  * @brief Enumeration for type of the span.
  */
-enum class Value : uint8_t
+enum Value : uint8_t
 {
   BASE = 0,
   FOREGROUND_COLOR,
@@ -43,7 +43,6 @@ enum class Value : uint8_t
   UNDERLINE,
   STRIKETHROUGH,
   CHARACTER_SPACING
-
 };
 } // namespace SpanType
 
index 3d04a54..ab43367 100644 (file)
@@ -50,7 +50,7 @@ StrikethroughSpan& StrikethroughSpan::operator=(StrikethroughSpan&& rhs) = defau
 StrikethroughSpan::~StrikethroughSpan()                                  = default;
 
 //Methods
-const Vector4 StrikethroughSpan::GetColor() const
+Vector4 StrikethroughSpan::GetColor() const
 {
   return GetImplementation(*this).GetColor();
 }
@@ -60,7 +60,7 @@ bool StrikethroughSpan::IsColorDefined() const
   return GetImplementation(*this).IsColorDefined();
 }
 
-const float StrikethroughSpan::GetHeight() const
+float StrikethroughSpan::GetHeight() const
 {
   return GetImplementation(*this).GetHeight();
 }
index de12289..b5f9b7f 100644 (file)
@@ -113,7 +113,7 @@ public: //Methods
    *
    * @return A color value.
    */
-  const Vector4 GetColor() const;
+  Vector4 GetColor() const;
 
   /**
    * @brief Retrieve whether the color is defined.
@@ -127,7 +127,7 @@ public: //Methods
    *
    * @return A height value.
    */
-  const float GetHeight() const;
+  float GetHeight() const;
 
   /**
    * @brief Retrieve whether the height is defined.
index 4760ed1..4eed79e 100644 (file)
@@ -66,7 +66,7 @@ UnderlineSpan::~UnderlineSpan() = default;
 
 //Methods
 
-const Text::Underline::Type UnderlineSpan::GetType() const
+Text::Underline::Type UnderlineSpan::GetType() const
 {
   return GetImplementation(*this).GetType();
 }
@@ -76,7 +76,7 @@ bool UnderlineSpan::IsTypeDefined() const
   return GetImplementation(*this).IsTypeDefined();
 }
 
-const Vector4 UnderlineSpan::GetColor() const
+Vector4 UnderlineSpan::GetColor() const
 {
   return GetImplementation(*this).GetColor();
 }
@@ -86,7 +86,7 @@ bool UnderlineSpan::IsColorDefined() const
   return GetImplementation(*this).IsColorDefined();
 }
 
-const float UnderlineSpan::GetHeight() const
+float UnderlineSpan::GetHeight() const
 {
   return GetImplementation(*this).GetHeight();
 }
@@ -96,7 +96,7 @@ bool UnderlineSpan::IsHeightDefined() const
   return GetImplementation(*this).IsHeightDefined();
 }
 
-const float UnderlineSpan::GetDashGap() const
+float UnderlineSpan::GetDashGap() const
 {
   return GetImplementation(*this).GetDashGap();
 }
@@ -106,7 +106,7 @@ bool UnderlineSpan::IsDashGapDefined() const
   return GetImplementation(*this).IsDashGapDefined();
 }
 
-const float UnderlineSpan::GetDashWidth() const
+float UnderlineSpan::GetDashWidth() const
 {
   return GetImplementation(*this).GetDashWidth();
 }
index d233c73..4c504d9 100644 (file)
@@ -133,7 +133,7 @@ public: //Methods
    *
    * @return A type value.
    */
-  const Text::Underline::Type GetType() const;
+  Text::Underline::Type GetType() const;
 
   /**
    * @brief Retrieve whether the type is defined.
@@ -147,7 +147,7 @@ public: //Methods
    *
    * @return A color value.
    */
-  const Vector4 GetColor() const;
+  Vector4 GetColor() const;
 
   /**
    * @brief Retrieve whether the color is defined.
@@ -161,7 +161,7 @@ public: //Methods
    *
    * @return A height value.
    */
-  const float GetHeight() const;
+  float GetHeight() const;
 
   /**
    * @brief Retrieve whether the height is defined.
@@ -175,7 +175,7 @@ public: //Methods
    *
    * @return A dash-gap value.
    */
-  const float GetDashGap() const;
+  float GetDashGap() const;
 
   /**
    * @brief Retrieve whether the dash-gap is defined.
@@ -189,7 +189,7 @@ public: //Methods
    *
    * @return A dash-width value.
    */
-  const float GetDashWidth() const;
+  float GetDashWidth() const;
 
   /**
    * @brief Retrieve whether the dash-width is defined.
index 78f45a7..38b5161 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2021 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.
@@ -24,9 +24,9 @@
 #include <vector>
 
 // GLES3+ is required for this to work!
-#include <GLES3/gl3.h>
 #include <EGL/egl.h>
 #include <EGL/eglext.h>
+#include <GLES3/gl3.h>
 
 #include <unistd.h>
 #include <any>
@@ -49,8 +49,8 @@ namespace
 /**
  * Vertices of quad to display when using offscreen rendering
  */
+// clang-format off
 constexpr float QUAD_VERTS[] = {
-  // positions          // colors           // texture coords
   1.0f,  1.0f,
   1.0f, -1.0f,
   -1.0f, -1.0f,
@@ -69,13 +69,13 @@ constexpr unsigned short QUAD_INDICES[] = {
  * UV coords of quad for offscreen rendering
  */
 constexpr float QUAD_UV[] = {
-  // positions          // colors           // texture coords
   1.0f, 1.0f,   // top right
   1.0f, 0.0f,   // bottom right
   0.0f, 0.0f,   // bottom left
   0.0f, 1.0f    // top left
 };
-}
+// clang-format on
+} // namespace
 
 namespace Dali::Internal
 {
@@ -92,7 +92,7 @@ struct DrawableViewNativeRenderer::Impl
   };
 
   // Queues management
-  bool DequeueTextureDrawBuffer( uint32_t& outIndex )
+  bool DequeueTextureDrawBuffer(uint32_t& outIndex)
   {
     std::scoped_lock<std::recursive_mutex> lock(mTextureQueueMutex);
     if(mTextureDrawQueue.empty())
@@ -242,13 +242,12 @@ struct DrawableViewNativeRenderer::Impl
       fb.framebufferId = offscreenFramebuffer;
 
       [[maybe_unused]] auto result = glCheckFramebufferStatus(GL_FRAMEBUFFER);
-      DALI_ASSERT_ALWAYS( result == GL_FRAMEBUFFER_COMPLETE && "Framebuffer incomplete!");
+      DALI_ASSERT_ALWAYS(result == GL_FRAMEBUFFER_COMPLETE && "Framebuffer incomplete!");
       return offscreenFramebuffer;
     }
     return 0u;
   }
 
-
   /**
    * Constructor
    */
@@ -274,17 +273,20 @@ struct DrawableViewNativeRenderer::Impl
    */
   void InitializeThread()
   {
+    // Make mRunning true first
+    // Terminate() may be called before StartThread()
+    mRunning = true;
+
     mThread = std::make_unique<std::thread>(&Impl::StartThread, this);
   }
 
-  void PushRenderCallbackInputData( const Dali::RenderCallbackInput& renderCallbackInput )
+  void PushRenderCallbackInputData(const Dali::RenderCallbackInput& renderCallbackInput)
   {
-
     std::scoped_lock<std::mutex> lock(mRenderCallbackInputDataMutex);
     mRenderCallbackInputData = renderCallbackInput;
   }
 
-  void PopRenderCallbackInputData( Dali::RenderCallbackInput& renderCallbackInput )
+  void PopRenderCallbackInputData(Dali::RenderCallbackInput& renderCallbackInput)
   {
     std::scoped_lock<std::mutex> lock(mRenderCallbackInputDataMutex);
     renderCallbackInput = mRenderCallbackInputData;
@@ -303,8 +305,6 @@ struct DrawableViewNativeRenderer::Impl
    */
   void StartThread()
   {
-    mRunning = true;
-
     // We need to acquire shared context, while this is not done
     // it's necessary to wait for context to be bound.
     while(mRunning && !mEglContextBound)
@@ -352,8 +352,8 @@ struct DrawableViewNativeRenderer::Impl
         GL(glDeleteTextures(1, &fb.textureId))
         fb.textureId = 0u;
       }
-      fb.textureId = CreateOffscreenTexture( mWidth, mHeight );
-      fb.framebufferId = CreateFramebuffer( index, mWidth, mHeight );
+      fb.textureId     = CreateOffscreenTexture(mWidth, mHeight);
+      fb.framebufferId = CreateFramebuffer(index, mWidth, mHeight);
       index++;
     }
   }
@@ -371,10 +371,10 @@ struct DrawableViewNativeRenderer::Impl
 
       Dali::RenderCallbackInput input;
 
-      PopRenderCallbackInputData( input );
+      PopRenderCallbackInputData(input);
 
       uint32_t index{0u};
-      auto result = DequeueTextureDrawBuffer(index);
+      auto     result = DequeueTextureDrawBuffer(index);
       if(!result)
       {
         continue;
@@ -384,7 +384,6 @@ struct DrawableViewNativeRenderer::Impl
       GL(glBindFramebuffer(GL_FRAMEBUFFER, fb.framebufferId))
       GL(glClear(0));
 
-
       // Invoke callback
       if(mOnRenderCallback)
       {
@@ -407,16 +406,16 @@ struct DrawableViewNativeRenderer::Impl
     }
   }
 
-  void Resize(uint32_t width, uint32_t height )
+  void Resize(uint32_t width, uint32_t height)
   {
-    mWidth = width;
-    mHeight = height;
+    mWidth         = width;
+    mHeight        = height;
     mResizeRequest = true;
   }
 
-  uint32_t mWidth {0u};
-  uint32_t mHeight {0u};
-  std::atomic_bool mResizeRequest { false };
+  uint32_t         mWidth{0u};
+  uint32_t         mHeight{0u};
+  std::atomic_bool mResizeRequest{false};
 
   /**
    * Clones current EGL context, this function must be called from the render callback
@@ -452,7 +451,7 @@ struct DrawableViewNativeRenderer::Impl
   }
 
   // Pre-, Post- functions are being called from the callbacks
-  void GlViewPreInit( const Dali::RenderCallbackInput& input )
+  void GlViewPreInit(const Dali::RenderCallbackInput& input)
   {
     // This runs on DALi RenderThread!!!
 
@@ -460,7 +459,7 @@ struct DrawableViewNativeRenderer::Impl
     if(mThread && !mEglContextBound)
     {
       // Store the shared context just once
-      if(!mEglSharedContext )
+      if(!mEglSharedContext)
       {
         // Store the shared context returned by the drawable callback
         mEglSharedContext = std::any_cast<EGLContext>(input.eglContext);
@@ -549,7 +548,7 @@ struct DrawableViewNativeRenderer::Impl
           {
             glGetShaderInfoLog(shader, infoLen, NULL, logBuffer);
 
-            DALI_ASSERT_ALWAYS( true && logBuffer);
+            DALI_ASSERT_ALWAYS(true && logBuffer);
 
             free(logBuffer);
             logBuffer = NULL;
@@ -584,9 +583,9 @@ struct DrawableViewNativeRenderer::Impl
       "    gl_FragColor = texture2D(tex, vTexCoords);\n"
       "}\n";
 
-    mBlitProgram = CreateProgram(glVertexShader, glFragmentShader);
-    mBlitVertexLocation       = glGetAttribLocation(mBlitProgram, "vertexPosition");
-    mBlitTexCoord = glGetAttribLocation(mBlitProgram, "texCoords");
+    mBlitProgram        = CreateProgram(glVertexShader, glFragmentShader);
+    mBlitVertexLocation = glGetAttribLocation(mBlitProgram, "vertexPosition");
+    mBlitTexCoord       = glGetAttribLocation(mBlitProgram, "texCoords");
   }
 
   GLuint mBlitProgram{0u};
@@ -607,7 +606,7 @@ struct DrawableViewNativeRenderer::Impl
       mTextureDrawQueue.push_back(i);
 
       // Create framebuffers
-      CreateFramebuffer( i, mWidth, mHeight);
+      CreateFramebuffer(i, mWidth, mHeight);
     }
   }
 
@@ -680,7 +679,7 @@ struct DrawableViewNativeRenderer::Impl
 
     // Deqeueue texture, there should be always something waiting to be drawn, if not, ignore
     FrameBufferTexture fb;
-    auto textureBufferIndex = DequeueTextureReadBuffer(fb);
+    auto               textureBufferIndex = DequeueTextureReadBuffer(fb);
 
     // Do nothing if frame not ready
     if(textureBufferIndex < 0)
@@ -700,7 +699,7 @@ struct DrawableViewNativeRenderer::Impl
       if(mLastTextureBufferIndex >= 0)
       {
         // return it to the queue
-        EnqueueTextureDrawBuffer( mLastTextureBufferIndex );
+        EnqueueTextureDrawBuffer(mLastTextureBufferIndex);
       }
     }
 
@@ -717,7 +716,7 @@ struct DrawableViewNativeRenderer::Impl
     }
     GL(glBindTexture(GL_TEXTURE_2D, mFramebufferTexture[textureBufferIndex].textureId));
 
-    GL(glDrawElements( GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, QUAD_INDICES))
+    GL(glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, QUAD_INDICES))
 
     mLastTextureBufferIndex = textureBufferIndex;
   }
@@ -747,14 +746,14 @@ struct DrawableViewNativeRenderer::Impl
   std::deque<uint32_t> mTextureReadQueue;
 
   // Mutex guarding the queues reads/writes
-  std::recursive_mutex mTextureQueueMutex;
-  std::unique_ptr<std::thread> mThread; ///< Thread for parallel mode
-  bool                         mRunning{false}; ///< Thread running flag
+  std::recursive_mutex         mTextureQueueMutex;
+  std::unique_ptr<std::thread> mThread;              ///< Thread for parallel mode
+  bool                         mRunning{false};      ///< Thread running flag
   EGLContext                   mEglContext{nullptr}; ///< EGL context associated with the thread
   EGLContext                   mEglSharedContext{nullptr};
 
-  EGLDisplay       mEglDisplay{nullptr}; ///< Current EGL display
-  std::atomic_bool mEglContextBound{false}; ///< Flag indicating whether EGL context is bound
+  EGLDisplay       mEglDisplay{nullptr};         ///< Current EGL display
+  std::atomic_bool mEglContextBound{false};      ///< Flag indicating whether EGL context is bound
   EGLSurface       mDrawSurface{EGL_NO_SURFACE}; ///< Current EGL draw surface
   EGLSurface       mReadSurface{EGL_NO_SURFACE}; ///< Current EGL read surface
 
@@ -764,9 +763,9 @@ struct DrawableViewNativeRenderer::Impl
   std::unique_ptr<CallbackBase> mOnTerminateCallback{nullptr};
 
   int32_t mLastTextureBufferIndex{-1};
-  bool mBlitStateDone{false};
+  bool    mBlitStateDone{false};
 
-  std::mutex mRenderCallbackInputDataMutex{};
+  std::mutex                mRenderCallbackInputDataMutex{};
   Dali::RenderCallbackInput mRenderCallbackInputData{};
 
   NativeRendererCreateInfo mCreateInfo{};
@@ -810,7 +809,7 @@ void DrawableViewNativeRenderer::Resize(uint32_t width, uint32_t height)
   mImpl->Resize(width, height);
 }
 
-void DrawableViewNativeRenderer::PushRenderCallbackInputData( const Dali::RenderCallbackInput& renderCallbackInput )
+void DrawableViewNativeRenderer::PushRenderCallbackInputData(const Dali::RenderCallbackInput& renderCallbackInput)
 {
   mImpl->PushRenderCallbackInputData(renderCallbackInput);
 }
@@ -820,4 +819,4 @@ void DrawableViewNativeRenderer::Terminate()
   mImpl->Terminate();
 }
 
-} // namespace Dali::Internal
\ No newline at end of file
+} // namespace Dali::Internal
index fce3e3b..0a1b057 100644 (file)
@@ -2106,7 +2106,7 @@ private:
   struct TextUpdater;
   struct SpannableHandler;
 
-  std::unique_ptr<Impl> mImpl;
+  std::unique_ptr<Impl> mImpl{nullptr};
 };
 
 } // namespace Dali::Toolkit::Text
index 1bdf94f..26d33a6 100644 (file)
@@ -56,7 +56,7 @@ Dali::Toolkit::Text::BackgroundColorSpan BackgroundColorSpan::New(const Vector4
 }
 
 //Methods
-const Vector4 BackgroundColorSpan::GetBackgroundColor() const
+Vector4 BackgroundColorSpan::GetBackgroundColor() const
 {
   return mImpl->mBackgroundColor;
 }
index f94bae0..d39bc1c 100644 (file)
@@ -77,7 +77,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::BackgroundColorSpan::GetBackgroundColor()
    */
-  const Vector4 GetBackgroundColor() const;
+  Vector4 GetBackgroundColor() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::BackgroundColorSpan::IsBackgroundColorDefined()
index 5c1897d..3e1fb35 100644 (file)
@@ -41,7 +41,7 @@ BaseSpan::~BaseSpan()
 {
 }
 
-const Dali::Toolkit::Text::SpanType::Value BaseSpan::GetSpanType() const
+Dali::Toolkit::Text::SpanType::Value BaseSpan::GetSpanType() const
 {
   return mImpl->mSpanTypeValue;
 }
index 8317e0a..5f01524 100644 (file)
@@ -72,7 +72,7 @@ public:
    * @copydoc Dali::Toolkit::Text::SpanType::Value GetSpanType
    */
 
-  const Dali::Toolkit::Text::SpanType::Value GetSpanType() const;
+  Dali::Toolkit::Text::SpanType::Value GetSpanType() const;
 
 public: //Methods for internal only
   /**
index 484b4b4..aacf892 100644 (file)
@@ -57,7 +57,7 @@ Dali::Toolkit::Text::CharacterSpacingSpan CharacterSpacingSpan::New(const float&
 }
 
 //Methods
-const float CharacterSpacingSpan::GetCharacterSpacing() const
+float CharacterSpacingSpan::GetCharacterSpacing() const
 {
   return mImpl->mCharacterSpacing;
 }
index 4aa8adc..c3446f0 100644 (file)
@@ -70,7 +70,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::CharacterSpacingSpan::GetCharacterSpacing()
    */
-  const float GetCharacterSpacing() const;
+  float GetCharacterSpacing() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::CharacterSpacingSpan::IsCharacterSpacingDefined()
index 4a7811f..66212ad 100644 (file)
@@ -100,7 +100,7 @@ void FontSpan::SetFamilyName(const std::string& familyName)
   mImpl->mFamilyNameDefined = true;
 }
 
-const Dali::TextAbstraction::FontWeight::Type FontSpan::GetWeight() const
+Dali::TextAbstraction::FontWeight::Type FontSpan::GetWeight() const
 {
   return mImpl->mWeight;
 }
@@ -116,7 +116,7 @@ void FontSpan::SetWeight(const Dali::TextAbstraction::FontWeight::Type& weight)
   mImpl->mWeightDefined = true;
 }
 
-const Dali::TextAbstraction::FontWidth::Type FontSpan::GetWidth() const
+Dali::TextAbstraction::FontWidth::Type FontSpan::GetWidth() const
 {
   return mImpl->mWidth;
 }
@@ -132,7 +132,7 @@ void FontSpan::SetWidth(const Dali::TextAbstraction::FontWidth::Type& width)
   mImpl->mWidthDefined = true;
 }
 
-const Dali::TextAbstraction::FontSlant::Type FontSpan::GetSlant() const
+Dali::TextAbstraction::FontSlant::Type FontSpan::GetSlant() const
 {
   return mImpl->mSlant;
 }
@@ -148,7 +148,7 @@ void FontSpan::SetSlant(const Dali::TextAbstraction::FontSlant::Type& slant)
   mImpl->mSlantDefined = true;
 }
 
-const float FontSpan::GetSize() const
+float FontSpan::GetSize() const
 {
   return mImpl->mSize;
 }
index 30306cd..56ab9d2 100644 (file)
@@ -85,7 +85,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::FontSpan::GetWeight()
    */
-  const Dali::TextAbstraction::FontWeight::Type GetWeight() const;
+  Dali::TextAbstraction::FontWeight::Type GetWeight() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::FontSpan::IsWeightDefined()
@@ -95,7 +95,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::FontSpan::GetWidth()
    */
-  const Dali::TextAbstraction::FontWidth::Type GetWidth() const;
+  Dali::TextAbstraction::FontWidth::Type GetWidth() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::FontSpan::IsWidthDefined()
@@ -105,7 +105,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::FontSpan::GetSlant()
    */
-  const Dali::TextAbstraction::FontSlant::Type GetSlant() const;
+  Dali::TextAbstraction::FontSlant::Type GetSlant() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::FontSpan::IsSlantDefined()
@@ -115,7 +115,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::FontSpan::GetSize()
    */
-  const float GetSize() const;
+  float GetSize() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::FontSpan::IsSizeDefined()
index fa00d45..9e0ab32 100644 (file)
@@ -57,7 +57,7 @@ Dali::Toolkit::Text::ForegroundColorSpan ForegroundColorSpan::New(Vector4 color)
 }
 
 //Methods
-const Vector4 ForegroundColorSpan::GetForegroundColor() const
+Vector4 ForegroundColorSpan::GetForegroundColor() const
 {
   return mImpl->mForegroundColor;
 }
index 09f226a..b75a5aa 100644 (file)
@@ -70,7 +70,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::ForegroundColorSpan::GetForegroundColor()
    */
-  const Vector4 GetForegroundColor() const;
+  Vector4 GetForegroundColor() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::ForegroundColorSpan::IsForegroundColorDefined()
index c589cf2..7cca940 100644 (file)
@@ -63,7 +63,7 @@ Dali::Toolkit::Text::StrikethroughSpan StrikethroughSpan::New(Vector4 color, flo
 }
 
 //Methods
-const Vector4 StrikethroughSpan::GetColor() const
+Vector4 StrikethroughSpan::GetColor() const
 {
   return mImpl->mStrikethroughProperties.color;
 }
@@ -79,7 +79,7 @@ void StrikethroughSpan::SetColor(const Vector4& color)
   mImpl->mStrikethroughProperties.colorDefined = true;
 }
 
-const float StrikethroughSpan::GetHeight() const
+float StrikethroughSpan::GetHeight() const
 {
   return mImpl->mStrikethroughProperties.height;
 }
index 6c51171..def7fa9 100644 (file)
@@ -83,7 +83,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::StrikethroughSpan::GetColor()
    */
-  const Vector4 GetColor() const;
+  Vector4 GetColor() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::StrikethroughSpan::IsColorDefined()
@@ -93,7 +93,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::StrikethroughSpan::GetHeight()
    */
-  const float GetHeight() const;
+  float GetHeight() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::StrikethroughSpan::IsHeightDefined()
index 9124e02..841c5ea 100644 (file)
@@ -94,7 +94,7 @@ Dali::Toolkit::Text::UnderlineSpan UnderlineSpan::NewDouble(Vector4 color, float
 
 //Methods
 
-const Text::Underline::Type UnderlineSpan::GetType() const
+Text::Underline::Type UnderlineSpan::GetType() const
 {
   return mImpl->mUnderlineProperties.type;
 }
@@ -110,7 +110,7 @@ void UnderlineSpan::SetType(const Text::Underline::Type& type)
   mImpl->mUnderlineProperties.typeDefined = true;
 }
 
-const Vector4 UnderlineSpan::GetColor() const
+Vector4 UnderlineSpan::GetColor() const
 {
   return mImpl->mUnderlineProperties.color;
 }
@@ -126,7 +126,7 @@ void UnderlineSpan::SetColor(const Vector4& color)
   mImpl->mUnderlineProperties.colorDefined = true;
 }
 
-const float UnderlineSpan::GetHeight() const
+float UnderlineSpan::GetHeight() const
 {
   return mImpl->mUnderlineProperties.height;
 }
@@ -142,7 +142,7 @@ void UnderlineSpan::SetHeight(const float& height)
   mImpl->mUnderlineProperties.heightDefined = true;
 }
 
-const float UnderlineSpan::GetDashGap() const
+float UnderlineSpan::GetDashGap() const
 {
   return mImpl->mUnderlineProperties.dashGap;
 }
@@ -158,7 +158,7 @@ void UnderlineSpan::SetDashGap(const float& dashGap)
   mImpl->mUnderlineProperties.dashGapDefined = true;
 }
 
-const float UnderlineSpan::GetDashWidth() const
+float UnderlineSpan::GetDashWidth() const
 {
   return mImpl->mUnderlineProperties.dashWidth;
 }
index 9761979..023e3d4 100644 (file)
@@ -103,7 +103,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::UnderlineSpan::GetType()
    */
-  const Text::Underline::Type GetType() const;
+  Text::Underline::Type GetType() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::UnderlineSpan::IsTypeDefined()
@@ -113,7 +113,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::UnderlineSpan::GetColor()
    */
-  const Vector4 GetColor() const;
+  Vector4 GetColor() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::UnderlineSpan::IsColorDefined()
@@ -123,7 +123,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::UnderlineSpan::GetHeight()
    */
-  const float GetHeight() const;
+  float GetHeight() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::UnderlineSpan::IsHeightDefined()
@@ -133,7 +133,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::UnderlineSpan::GetDashGap()
    */
-  const float GetDashGap() const;
+  float GetDashGap() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::UnderlineSpan::IsDashGapDefined()
@@ -143,7 +143,7 @@ public: //Methods
   /**
    * @copydoc Dali::Toolkit::Text::UnderlineSpan::GetDashWidth()
    */
-  const float GetDashWidth() const;
+  float GetDashWidth() const;
 
   /**
    * @copydoc Dali::Toolkit::Text::UnderlineSpan::IsDashWidthDefined()
index 46d317a..30a8994 100644 (file)
@@ -29,7 +29,7 @@ namespace Toolkit
 {
 const unsigned int TOOLKIT_MAJOR_VERSION = 2;
 const unsigned int TOOLKIT_MINOR_VERSION = 2;
-const unsigned int TOOLKIT_MICRO_VERSION = 9;
+const unsigned int TOOLKIT_MICRO_VERSION = 10;
 const char* const  TOOLKIT_BUILD_DATE    = __DATE__ " " __TIME__;
 
 #ifdef DEBUG_ENABLED
index a9a2b9e..db31645 100644 (file)
Binary files a/dali-toolkit/styles/360x360/images/cursor_handler_drop_center.png and b/dali-toolkit/styles/360x360/images/cursor_handler_drop_center.png differ
index d9ed8b8..72bf805 100644 (file)
Binary files a/dali-toolkit/styles/360x360/images/selection_handle_drop_left.png and b/dali-toolkit/styles/360x360/images/selection_handle_drop_left.png differ
index f66b26b..6901e85 100644 (file)
Binary files a/dali-toolkit/styles/360x360/images/selection_handle_drop_right.png and b/dali-toolkit/styles/360x360/images/selection_handle_drop_right.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 55522be..dfe2166
Binary files a/dali-toolkit/styles/360x360/images/tw_bottom_btn_bg.png and b/dali-toolkit/styles/360x360/images/tw_bottom_btn_bg.png differ
index a9a2b9e..db31645 100644 (file)
Binary files a/dali-toolkit/styles/480x800/images/cursor_handler_drop_center.png and b/dali-toolkit/styles/480x800/images/cursor_handler_drop_center.png differ
index d9ed8b8..72bf805 100644 (file)
Binary files a/dali-toolkit/styles/480x800/images/selection_handle_drop_left.png and b/dali-toolkit/styles/480x800/images/selection_handle_drop_left.png differ
index f66b26b..6901e85 100644 (file)
Binary files a/dali-toolkit/styles/480x800/images/selection_handle_drop_right.png and b/dali-toolkit/styles/480x800/images/selection_handle_drop_right.png differ
index 15c937a..209320f 100644 (file)
Binary files a/dali-toolkit/styles/720x1280/images/cursor_handler_drop_center.png and b/dali-toolkit/styles/720x1280/images/cursor_handler_drop_center.png differ
index 149becb..55d7595 100644 (file)
Binary files a/dali-toolkit/styles/720x1280/images/selection_handle_drop_left.png and b/dali-toolkit/styles/720x1280/images/selection_handle_drop_left.png differ
index 75035bc..c1b8d9f 100644 (file)
Binary files a/dali-toolkit/styles/720x1280/images/selection_handle_drop_right.png and b/dali-toolkit/styles/720x1280/images/selection_handle_drop_right.png differ
index cc300fa..cb0968d 100644 (file)
Binary files a/dali-toolkit/styles/images-common/00_popup_bg.png and b/dali-toolkit/styles/images-common/00_popup_bg.png differ
old mode 100755 (executable)
new mode 100644 (file)
index c595eec..63529b4
Binary files a/dali-toolkit/styles/images-common/00_popup_bottom_bg.png and b/dali-toolkit/styles/images-common/00_popup_bottom_bg.png differ
old mode 100755 (executable)
new mode 100644 (file)
index ad3740b..f7c58bf
Binary files a/dali-toolkit/styles/images-common/00_popup_bubble_bg.png and b/dali-toolkit/styles/images-common/00_popup_bubble_bg.png differ
old mode 100755 (executable)
new mode 100644 (file)
index c1e6d8b..aba03ec
Binary files a/dali-toolkit/styles/images-common/00_popup_bubble_tail_bottom.png and b/dali-toolkit/styles/images-common/00_popup_bubble_tail_bottom.png differ
index 10c7466..de719ef 100644 (file)
Binary files a/dali-toolkit/styles/images-common/00_popup_button_bg.png and b/dali-toolkit/styles/images-common/00_popup_button_bg.png differ
index f819fc6..3ec7d70 100644 (file)
Binary files a/dali-toolkit/styles/images-common/copy_paste_icon_cut.png and b/dali-toolkit/styles/images-common/copy_paste_icon_cut.png differ
index 171b737..7652778 100644 (file)
Binary files a/dali-toolkit/styles/images-common/insertpoint-icon-pressed.png and b/dali-toolkit/styles/images-common/insertpoint-icon-pressed.png differ
index 61ab852..fa55887 100644 (file)
Binary files a/dali-toolkit/styles/images-common/insertpoint-icon.png and b/dali-toolkit/styles/images-common/insertpoint-icon.png differ
index 5590f15..dc0c116 100644 (file)
Binary files a/dali-toolkit/styles/images-common/keyboard_focus.9.png and b/dali-toolkit/styles/images-common/keyboard_focus.9.png differ
index 1846be2..460f3da 100644 (file)
Binary files a/dali-toolkit/styles/images-common/magnifier.png and b/dali-toolkit/styles/images-common/magnifier.png differ
index 3b2ff97..5e31ef6 100644 (file)
Binary files a/dali-toolkit/styles/images-common/popup_bg.png and b/dali-toolkit/styles/images-common/popup_bg.png differ
index 462c9db..b4d1c3e 100644 (file)
Binary files a/dali-toolkit/styles/images-common/popup_bubble_bg_ef.#.png and b/dali-toolkit/styles/images-common/popup_bubble_bg_ef.#.png differ
index 53b87fe..fd041ab 100644 (file)
Binary files a/dali-toolkit/styles/images-common/popup_bubble_tail_bottom_ef.png and b/dali-toolkit/styles/images-common/popup_bubble_tail_bottom_ef.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 1ace985..a4c8431
Binary files a/dali-toolkit/styles/images-common/popup_bubble_tail_top_ef.png and b/dali-toolkit/styles/images-common/popup_bubble_tail_top_ef.png differ
old mode 100755 (executable)
new mode 100644 (file)
index 806ba0e..7fd2d8e
Binary files a/dali-toolkit/styles/images-common/popup_tail_down.png and b/dali-toolkit/styles/images-common/popup_tail_down.png differ
index b2ed047..1d1115d 100644 (file)
Binary files a/dali-toolkit/styles/images-common/popup_tail_left.png and b/dali-toolkit/styles/images-common/popup_tail_left.png differ
index 16b28e0..0c89048 100644 (file)
Binary files a/dali-toolkit/styles/images-common/popup_tail_right.png and b/dali-toolkit/styles/images-common/popup_tail_right.png differ
index 599cf17..e483833 100644 (file)
Binary files a/dali-toolkit/styles/images-common/popup_tail_up.png and b/dali-toolkit/styles/images-common/popup_tail_up.png differ
index 0675a57..1886ff8 100644 (file)
Binary files a/dali-toolkit/styles/images-common/slider-popup-arrow.png and b/dali-toolkit/styles/images-common/slider-popup-arrow.png differ
index af8f7b6..cff8326 100644 (file)
Binary files a/dali-toolkit/styles/images-common/slider-skin-handle.png and b/dali-toolkit/styles/images-common/slider-skin-handle.png differ
index ba10440..04cb862 100644 (file)
Binary files a/dali-toolkit/styles/images-common/text-input-selection-handle-left.png and b/dali-toolkit/styles/images-common/text-input-selection-handle-left.png differ
index 3ab7a43..785e72e 100644 (file)
Binary files a/dali-toolkit/styles/images-common/text-input-selection-handle-right.png and b/dali-toolkit/styles/images-common/text-input-selection-handle-right.png differ
index 9695929..175456a 100644 (file)
Binary files a/dali-toolkit/styles/images-common/tooltip-tail-above.png and b/dali-toolkit/styles/images-common/tooltip-tail-above.png differ
index 3b4a0f9..698aa47 100644 (file)
Binary files a/dali-toolkit/styles/images-common/tooltip-tail-below.png and b/dali-toolkit/styles/images-common/tooltip-tail-below.png differ
index 11bd590..f021eb1 100644 (file)
Binary files a/docs/content/example-code/images/cards.jpg and b/docs/content/example-code/images/cards.jpg differ
index 9af5d02..fba2e85 100644 (file)
Binary files a/docs/content/figures/image-scaling/cards.jpg and b/docs/content/figures/image-scaling/cards.jpg differ
index f7d2cc4..3318f4d 100644 (file)
Binary files a/docs/content/figures/image-scaling/dog.jpg and b/docs/content/figures/image-scaling/dog.jpg differ
index 7317ea5..a1ac044 100644 (file)
Binary files a/docs/content/figures/image-scaling/door.jpg and b/docs/content/figures/image-scaling/door.jpg differ
index 7173b85..929aca1 100644 (file)
Binary files a/docs/content/figures/image-scaling/gallery-large-12.jpg and b/docs/content/figures/image-scaling/gallery-large-12.jpg differ
index e42dba7..1b5a294 100644 (file)
Binary files a/docs/content/figures/image-scaling/liberty.jpg and b/docs/content/figures/image-scaling/liberty.jpg differ
index 82310a8..0e34ff8 100644 (file)
@@ -1,6 +1,6 @@
 Name:       dali2-toolkit
 Summary:    Dali 3D engine Toolkit
-Version:    2.2.9
+Version:    2.2.10
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0 and BSD-3-Clause and MIT