Revert "[Tizen] Support to use NPatchImage in brokenImage"
authortscholb <scholb.kim@samsung.com>
Mon, 1 Nov 2021 08:49:02 +0000 (17:49 +0900)
committertscholb <scholb.kim@samsung.com>
Mon, 1 Nov 2021 08:49:06 +0000 (17:49 +0900)
This reverts commit bc3933c59153f3e59d22222941be39e5e6551e31.

Change-Id: Id22fd9e81d67f8672df88661a6fdc09dee893605

14 files changed:
dali-toolkit/devel-api/styling/style-manager-devel.cpp
dali-toolkit/devel-api/styling/style-manager-devel.h
dali-toolkit/internal/styling/style-manager-impl.cpp
dali-toolkit/internal/styling/style-manager-impl.h
dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp
dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp
dali-toolkit/internal/visuals/image/image-visual.cpp
dali-toolkit/internal/visuals/npatch-loader.cpp
dali-toolkit/internal/visuals/npatch/npatch-visual.cpp
dali-toolkit/internal/visuals/svg/svg-visual.cpp
dali-toolkit/internal/visuals/visual-factory-cache.cpp
dali-toolkit/internal/visuals/visual-factory-cache.h
dali-toolkit/internal/visuals/visual-factory-impl.cpp
dali-toolkit/internal/visuals/visual-factory-impl.h

index 94b3ecc..29f0e8b 100644 (file)
@@ -30,16 +30,6 @@ const Property::Map GetConfigurations(StyleManager styleManager)
   return GetImpl(styleManager).GetConfigurations();
 }
 
-void SetBrokenImageUrl(StyleManager styleManager, DevelStyleManager::BrokenImageType brokenImageType, const std::string& brokenImageUrl)
-{
-  return GetImpl(styleManager).SetBrokenImageUrl(Internal::StyleManager::BrokenImageType(brokenImageType), brokenImageUrl);
-}
-
-std::string GetBrokenImageUrl(StyleManager styleManager, DevelStyleManager::BrokenImageType brokenImageType)
-{
-  return GetImpl(styleManager).GetBrokenImageUrl(Internal::StyleManager::BrokenImageType(brokenImageType));
-}
-
 } // namespace DevelStyleManager
 
 } // namespace Toolkit
index 44162fd..efcff7d 100644 (file)
@@ -28,16 +28,6 @@ namespace Toolkit
 namespace DevelStyleManager
 {
 /**
- * @brief The Type of BrokenImage
- */
-enum BrokenImageType
-{
-  SMALL,
-  NORMAL,
-  LARGE
-};
-
-/**
  * @brief Gets all currently defined configurations.
  *
  * @pre The Builder has been initialized.
@@ -46,21 +36,6 @@ enum BrokenImageType
 **/
 DALI_TOOLKIT_API const Property::Map GetConfigurations(StyleManager styleManager);
 
-/**
-   * @brief Sets an image to be used when a visual has failed to correctly render
-   * @param[in] styleManager The instance of StyleManager
-   * @param[in] brokenImageType The type of broken image
-   * @param[in] brokenImageUrl The broken image url
-   */
-DALI_TOOLKIT_API void SetBrokenImageUrl(StyleManager styleManager, DevelStyleManager::BrokenImageType brokenImageType, const std::string& brokenImageUrl);
-
-/**
-   * @brief Gets an image to be used when a visual has failed to correctly render
-   * @param[in] styleManager The instance of StyleManager
-   * @param[in] brokenImageType BrokenImage type
-   */
-DALI_TOOLKIT_API std::string GetBrokenImageUrl(StyleManager styleManager, DevelStyleManager::BrokenImageType brokenImageType);
-
 } // namespace DevelStyleManager
 
 } // namespace Toolkit
index 13d5f7d..0968081 100644 (file)
@@ -45,8 +45,6 @@ const char* APPLICATION_RESOURCE_PATH_KEY = "APPLICATION_RESOURCE_PATH";
 
 const char* DEFAULT_TOOLKIT_PACKAGE_PATH = "/toolkit/";
 
-static constexpr int32_t COUNT_BROKEN_IMAGE_MAX = 3;
-
 #if defined(DEBUG_ENABLED)
 Debug::Filter* gLogFilter = Debug::Filter::New(Debug::NoLogging, false, "LOG_STYLE");
 #endif
@@ -127,9 +125,6 @@ StyleManager::StyleManager()
 
   // Sound & haptic style
   mFeedbackStyle = new FeedbackStyle();
-
-  // Initialize BrokenImages
-  mBrokenImageUrls.assign(COUNT_BROKEN_IMAGE_MAX, "");
 }
 
 StyleManager::~StyleManager()
@@ -314,17 +309,6 @@ const Property::Map StyleManager::GetConfigurations()
   return result;
 }
 
-void StyleManager::SetBrokenImageUrl(BrokenImageType brokenImageType, const std::string& brokenImageUrl)
-{
-  mBrokenImageUrls[brokenImageType] = brokenImageUrl;
-  EmitStyleChangeSignals(StyleChange::THEME_CHANGE);
-}
-
-std::string StyleManager::GetBrokenImageUrl(BrokenImageType brokenImageType)
-{
-  return mBrokenImageUrls[brokenImageType];
-}
-
 bool StyleManager::LoadFile(const std::string& filename, std::string& stringOut)
 {
   DALI_ASSERT_DEBUG(0 != filename.length());
index ef10d9a..b6eaff5 100644 (file)
@@ -46,17 +46,6 @@ class StyleManager : public Dali::BaseObject, public ConnectionTracker
 {
 public:
   /**
-   * @brief The Type of BrokenImage
-   */
-  enum BrokenImageType
-  {
-    SMALL,
-    NORMAL,
-    LARGE
-  };
-
-public:
-  /**
    * Singleton access
    *
    * @return The StyleManager object
@@ -106,16 +95,6 @@ public: // Public API
   const Property::Map GetConfigurations();
 
   /**
-   * @copydoc Toolkit::DevelStyleManager::SetBrokenImageUrl
-   */
-  void SetBrokenImageUrl(BrokenImageType brokenImageType, const std::string& brokenImageUrl);
-
-  /**
-   * @copydoc Toolkit::DevelStyleManager::GetBrokenImageUrl
-   */
-  std::string GetBrokenImageUrl(BrokenImageType brokenImageType);
-
-  /**
    * @brief Apply the theme style to a control.
    *
    * @param[in] control The control to apply style.
@@ -254,8 +233,6 @@ private:
 
   Toolkit::Internal::FeedbackStyle* mFeedbackStyle; ///< Feedback style
 
-  std::vector<std::string> mBrokenImageUrls; ///< For brokenImage
-
   // Signals
   Toolkit::StyleManager::StyleChangedSignalType mControlStyleChangeSignal; ///< Emitted when the style( theme/font ) changes for the controls to style themselves
   Toolkit::StyleManager::StyleChangedSignalType mStyleChangedSignal;       ///< Emitted after the controls have been styled
index 7d91e62..da54e1e 100644 (file)
@@ -807,14 +807,9 @@ TextureSet AnimatedImageVisual::SetLoadingFailed()
   DALI_LOG_INFO(gAnimImgLogFilter, Debug::Concise, "ResourceReady(ResourceStatus::FAILED)\n");
   ResourceReady(Toolkit::Visual::ResourceStatus::FAILED);
 
-  Actor actor = mPlacementActor.GetHandle();
-  Vector2 imageSize = Vector2::ZERO;
-  if(actor)
-  {
-    imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
-  }
-  mFactoryCache.GetBrokenImageRenderer(mImpl->mRenderer, imageSize);
-  TextureSet textureSet = mImpl->mRenderer.GetTextures();
+  TextureSet textureSet  = TextureSet::New();
+  Texture    brokenImage = mFactoryCache.GetBrokenVisualImage();
+  textureSet.SetTexture(0u, brokenImage);
 
   if(mFrameDelayTimer)
   {
index 0fef82d..35d7456 100644 (file)
@@ -305,10 +305,14 @@ void AnimatedVectorImageVisual::DoSetOnScene(Actor& actor)
 
   if(mLoadFailed)
   {
-    Vector2 imageSize = Vector2::ZERO;
-    imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
-    mFactoryCache.GetBrokenImageRenderer(mImpl->mRenderer, imageSize);
+    TextureSet textureSet = TextureSet::New();
+    mImpl->mRenderer.SetTextures(textureSet);
+
+    Texture brokenImage = mFactoryCache.GetBrokenVisualImage();
+    textureSet.SetTexture(0u, brokenImage);
+
     actor.AddRenderer(mImpl->mRenderer);
+
     ResourceReady(Toolkit::Visual::ResourceStatus::FAILED);
   }
   else
index 292f3f9..0251a1d 100644 (file)
@@ -513,14 +513,8 @@ void ImageVisual::GetNaturalSize(Vector2& naturalSize)
       }
       else
       {
-        Actor actor = mPlacementActor.GetHandle();
-        Vector2 imageSize = Vector2::ZERO;
-        if(actor)
-        {
-          imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
-        }
-        mFactoryCache.GetBrokenImageRenderer(mImpl->mRenderer, imageSize);
-        Texture brokenImage = mImpl->mRenderer.GetTextures().GetTexture(0);
+        Texture brokenImage = mFactoryCache.GetBrokenVisualImage();
+
         naturalSize.x = brokenImage.GetWidth();
         naturalSize.y = brokenImage.GetWidth();
       }
@@ -716,12 +710,12 @@ void ImageVisual::DoSetOnScene(Actor& actor)
   }
   else if(mLoadState == TextureManager::LoadState::LOAD_FAILED)
   {
-    Vector2 imageSize = Vector2::ZERO;
-    if(actor)
-    {
-      imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
-    }
-    mFactoryCache.GetBrokenImageRenderer(mImpl->mRenderer, imageSize);
+    Texture brokenImage = mFactoryCache.GetBrokenVisualImage();
+
+    mTextures = TextureSet::New();
+    mTextures.SetTexture(0u, brokenImage);
+    mImpl->mRenderer.SetTextures(mTextures);
+
     actor.AddRenderer(mImpl->mRenderer);
     mPlacementActor.Reset();
 
@@ -866,30 +860,26 @@ void ImageVisual::UploadComplete(bool loadingSuccess, int32_t textureId, Texture
     EnablePreMultipliedAlpha(preMultiplied);
 
     Actor actor = mPlacementActor.GetHandle();
-    if(!loadingSuccess)
-    {
-      Vector2 imageSize = Vector2::ZERO;
-      if(actor)
-      {
-        imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
-      }
-      mFactoryCache.GetBrokenImageRenderer(mImpl->mRenderer, imageSize);
-      textureSet = mImpl->mRenderer.GetTextures();
-    }
-    else
-    {
-      Sampler sampler = Sampler::New();
-      sampler.SetWrapMode(mWrapModeU, mWrapModeV);
-      textureSet.SetSampler(0u, sampler);
-      mImpl->mRenderer.SetTextures(textureSet);
-    }
-
     if(actor)
     {
       actor.AddRenderer(mImpl->mRenderer);
       // reset the weak handle so that the renderer only get added to actor once
       mPlacementActor.Reset();
     }
+
+    if(!loadingSuccess)
+    {
+      Texture brokenImage = mFactoryCache.GetBrokenVisualImage();
+
+      textureSet = TextureSet::New();
+      textureSet.SetTexture(0u, brokenImage);
+      mImpl->mRenderer.SetTextures(textureSet);
+    }
+
+    Sampler sampler = Sampler::New();
+    sampler.SetWrapMode(mWrapModeU, mWrapModeV);
+    textureSet.SetSampler(0u, sampler);
+    mImpl->mRenderer.SetTextures(textureSet);
   }
 
   // Storing TextureSet needed when renderer staged.
index cb2850d..5f8ddff 100644 (file)
@@ -104,6 +104,7 @@ std::size_t NPatchLoader::Load(TextureManager& textureManager, TextureUploadObse
             newData->AddObserver(textureObserver);
 
             mCache.PushBack(newData);
+
             return newData->GetId(); // valid ids start from 1u
           }
         }
@@ -132,6 +133,7 @@ std::size_t NPatchLoader::Load(TextureManager& textureManager, TextureUploadObse
     preMultiplyOnLoad = (preMultiplyOnLoading == TextureManager::MultiplyOnLoad::MULTIPLY_ON_LOAD) ? true : false;
     data->SetLoadedNPatchData(pixelBuffer, preMultiplyOnLoad);
   }
+
   return data->GetId();
 }
 
index aea229b..d9c26aa 100644 (file)
@@ -562,14 +562,7 @@ void NPatchVisual::ApplyTextureAndUniforms()
     DALI_LOG_ERROR("The N patch image '%s' is not a valid N patch image\n", mImageUrl.GetUrl().c_str());
     textureSet = TextureSet::New();
 
-    Actor actor = mPlacementActor.GetHandle();
-    Vector2 imageSize = Vector2::ZERO;
-    if(actor)
-    {
-      imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
-    }
-    mFactoryCache.GetBrokenImageRenderer(mImpl->mRenderer, imageSize);
-    Texture croppedImage = mImpl->mRenderer.GetTextures().GetTexture(0);
+    Texture croppedImage = mFactoryCache.GetBrokenVisualImage();
     textureSet.SetTexture(0u, croppedImage);
     mImpl->mRenderer.RegisterProperty("uFixed[0]", Vector2::ZERO);
     mImpl->mRenderer.RegisterProperty("uFixed[1]", Vector2::ZERO);
index 2dbbffe..67fd435 100644 (file)
@@ -157,9 +157,9 @@ void SvgVisual::DoSetOnScene(Actor& actor)
 
   if(mLoadFailed)
   {
-    Vector2 imageSize = Vector2::ZERO;
-    imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
-    mFactoryCache.GetBrokenImageRenderer(mImpl->mRenderer, imageSize);
+    Texture brokenImage = mFactoryCache.GetBrokenVisualImage();
+    textureSet.SetTexture(0u, brokenImage);
+
     actor.AddRenderer(mImpl->mRenderer);
 
     ResourceReady(Toolkit::Visual::ResourceStatus::FAILED);
@@ -327,9 +327,11 @@ void SvgVisual::ApplyRasterizedImage(VectorImageRenderer vectorRenderer, PixelDa
     Actor actor = mPlacementActor.GetHandle();
     if(actor)
     {
-      Vector2 imageSize = Vector2::ZERO;     
-      imageSize = actor.GetProperty(Actor::Property::SIZE).Get<Vector2>();
-      mFactoryCache.GetBrokenImageRenderer(mImpl->mRenderer, imageSize);
+      TextureSet textureSet = mImpl->mRenderer.GetTextures();
+
+      Texture brokenImage = mFactoryCache.GetBrokenVisualImage();
+      textureSet.SetTexture(0u, brokenImage);
+
       actor.AddRenderer(mImpl->mRenderer);
     }
 
index 83bf574..b4fde0a 100644 (file)
@@ -26,8 +26,6 @@
 #include <dali-toolkit/internal/visuals/color/color-visual.h>
 #include <dali-toolkit/internal/visuals/image-atlas-manager.h>
 #include <dali-toolkit/internal/visuals/svg/svg-visual.h>
-#include <dali/integration-api/debug.h>
-#include <dali-toolkit/internal/graphics/builtin-shader-extern-gen.h>
 
 namespace Dali
 {
@@ -35,72 +33,12 @@ namespace Toolkit
 {
 namespace Internal
 {
-namespace
-{
-
-static constexpr int32_t COUNT_BROKEN_IMAGE_MAX = 3;
-
-/**
- * @brief Creates the geometry formed from the vertices and indices
- *
- * @param[in]  vertices             The vertices to generate the geometry from
- * @param[in]  indices              The indices to generate the geometry from
- * @return The geometry formed from the vertices and indices
- */
-Geometry GenerateGeometry(const Vector<Vector2>& vertices, const Vector<unsigned short>& indices)
-{
-  Property::Map vertexFormat;
-  vertexFormat["aPosition"] = Property::VECTOR2;
-  VertexBuffer vertexBuffer = VertexBuffer::New(vertexFormat);
-  if(vertices.Size() > 0)
-  {
-    vertexBuffer.SetData(&vertices[0], vertices.Size());
-  }
-
-  // Create the geometry object
-  Geometry geometry = Geometry::New();
-  geometry.AddVertexBuffer(vertexBuffer);
-  if(indices.Size() > 0)
-  {
-    geometry.SetIndexBuffer(&indices[0], indices.Size());
-  }
-
-  return geometry;
-}
-
-/**
- * @brief Adds the indices to form a quad composed off two triangles where the indices are organised in a grid
- *
- * @param[out] indices     The indices to add to
- * @param[in]  rowIdx      The row index to start the quad
- * @param[in]  nextRowIdx  The index to the next row
- */
-void AddQuadIndices(Vector<unsigned short>& indices, unsigned int rowIdx, unsigned int nextRowIdx)
-{
-  indices.PushBack(rowIdx);
-  indices.PushBack(nextRowIdx + 1);
-  indices.PushBack(rowIdx + 1);
-
-  indices.PushBack(rowIdx);
-  indices.PushBack(nextRowIdx);
-  indices.PushBack(nextRowIdx + 1);
-}
-
-void AddVertex(Vector<Vector2>& vertices, unsigned int x, unsigned int y)
-{
-  vertices.PushBack(Vector2(x, y));
-}
-
-} //unnamed namespace
-
 VisualFactoryCache::VisualFactoryCache(bool preMultiplyOnLoad)
 : mSvgRasterizeThread(NULL),
   mVectorAnimationManager(),
-  mPreMultiplyOnLoad(preMultiplyOnLoad),
-  mBrokenImageInfoContainer(),
-  mUseCustomBrokenImage(false)
+  mBrokenImageUrl(""),
+  mPreMultiplyOnLoad(preMultiplyOnLoad)
 {
-  mBrokenImageInfoContainer.assign(COUNT_BROKEN_IMAGE_MAX, BrokenImageInfo());
 }
 
 VisualFactoryCache::~VisualFactoryCache()
@@ -166,7 +104,7 @@ ImageAtlasManagerPtr VisualFactoryCache::GetAtlasManager()
   if(!mAtlasManager)
   {
     mAtlasManager = new ImageAtlasManager();
-    mAtlasManager->SetBrokenImage(mBrokenImageInfoContainer[BrokenImageType::SMALL].url);
+    mAtlasManager->SetBrokenImage(mBrokenImageUrl);
   }
 
   return mAtlasManager;
@@ -269,22 +207,20 @@ Geometry VisualFactoryCache::CreateGridGeometry(Uint16Pair gridSize)
   return geometry;
 }
 
-Texture VisualFactoryCache::GetBrokenVisualImage(BrokenImageType brokenImageType)
+Texture VisualFactoryCache::GetBrokenVisualImage()
 {
-  if(!(mBrokenImageInfoContainer[brokenImageType].texture) && !mBrokenImageInfoContainer[brokenImageType].url.empty())
+  if(!mBrokenImageTexture && mBrokenImageUrl.size())
   {
-    PixelData          pixelData;
-    Devel::PixelBuffer pixelBuffer = LoadImageFromFile(mBrokenImageInfoContainer[brokenImageType].url);
+    PixelData          data;
+    Devel::PixelBuffer pixelBuffer = LoadImageFromFile(mBrokenImageUrl);
     if(pixelBuffer)
     {
-      pixelData                = Devel::PixelBuffer::Convert(pixelBuffer); // takes ownership of buffer
-      mBrokenImageInfoContainer[brokenImageType].texture  = Texture::New(Dali::TextureType::TEXTURE_2D, pixelData.GetPixelFormat(), pixelData.GetWidth(), pixelData.GetHeight());
-      mBrokenImageInfoContainer[brokenImageType].texture.Upload(pixelData);
-      mBrokenImageInfoContainer[brokenImageType].width = pixelData.GetWidth();
-      mBrokenImageInfoContainer[brokenImageType].height = pixelData.GetHeight();
+      data                = Devel::PixelBuffer::Convert(pixelBuffer); // takes ownership of buffer
+      mBrokenImageTexture = Texture::New(Dali::TextureType::TEXTURE_2D, data.GetPixelFormat(), data.GetWidth(), data.GetHeight());
+      mBrokenImageTexture.Upload(data);
     }
   }
-  return mBrokenImageInfoContainer[brokenImageType].texture;
+  return mBrokenImageTexture;
 }
 
 void VisualFactoryCache::SetPreMultiplyOnLoad(bool preMultiply)
@@ -297,290 +233,16 @@ bool VisualFactoryCache::GetPreMultiplyOnLoad()
   return mPreMultiplyOnLoad;
 }
 
-void VisualFactoryCache::EnableCustomBrokenImage(bool enabled)
-{
-  mUseCustomBrokenImage = enabled;
-}
-
-void VisualFactoryCache::SetBrokenImageUrl(BrokenImageType brokenImageType, const std::string& brokenImageUrl)
+void VisualFactoryCache::SetBrokenImageUrl(const std::string& brokenImageUrl)
 {
-  const NPatchData* data;
-  mBrokenImageInfoContainer[brokenImageType].url = brokenImageUrl;
+  mBrokenImageUrl = brokenImageUrl;
 
   if(!mAtlasManager)
   {
     mAtlasManager = new ImageAtlasManager();
   }
 
-  mAtlasManager->SetBrokenImage(mBrokenImageInfoContainer[brokenImageType].url);
-
-  // Update BrokenImageType
-  if(!mBrokenImageInfoContainer[brokenImageType].url.empty())
-  {
-    Rect<int> border;
-    VisualUrl visualUrl(mBrokenImageInfoContainer[brokenImageType].url);
-    mBrokenImageInfoContainer[brokenImageType].visualType = visualUrl.GetType();
-    if(mBrokenImageInfoContainer[brokenImageType].visualType == VisualUrl::Type::N_PATCH)
-    {
-      mBrokenImageInfoContainer[brokenImageType].npatchId = mNPatchLoader.Load( mTextureManager, NULL, mBrokenImageInfoContainer[brokenImageType].url, border, mPreMultiplyOnLoad, true);
-      if(mNPatchLoader.GetNPatchData(mBrokenImageInfoContainer[brokenImageType].npatchId, data) && data->GetLoadingState() == NPatchData::LoadingState::LOAD_COMPLETE)
-      {
-        mBrokenImageInfoContainer[brokenImageType].width = data->GetCroppedWidth();
-        mBrokenImageInfoContainer[brokenImageType].height = data->GetCroppedHeight();
-      }
-    }
-    else
-    {
-      GetBrokenVisualImage(brokenImageType);
-    }
-  }
-}
-
-VisualUrl::Type VisualFactoryCache::GetBrokenImageVisualType(BrokenImageType brokenImageType)
-{
-  return mBrokenImageInfoContainer[brokenImageType].visualType;
-}
-
-Geometry VisualFactoryCache::CreateNPatchGeometry(Uint16Pair gridSize)
-{
-  uint16_t gridWidth  = gridSize.GetWidth();
-  uint16_t gridHeight = gridSize.GetHeight();
-
-  // Create vertices
-  Vector<Vector2> vertices;
-  vertices.Reserve((gridWidth + 1) * (gridHeight + 1));
-
-  for(int y = 0; y < gridHeight + 1; ++y)
-  {
-    for(int x = 0; x < gridWidth + 1; ++x)
-    {
-      AddVertex(vertices, x, y);
-    }
-  }
-
-  // Create indices
-  Vector<unsigned short> indices;
-  indices.Reserve(gridWidth * gridHeight * 6);
-
-  unsigned int rowIdx     = 0;
-  unsigned int nextRowIdx = gridWidth + 1;
-  for(int y = 0; y < gridHeight; ++y, ++nextRowIdx, ++rowIdx)
-  {
-    for(int x = 0; x < gridWidth; ++x, ++nextRowIdx, ++rowIdx)
-    {
-      AddQuadIndices(indices, rowIdx, nextRowIdx);
-    }
-  }
-
-  return GenerateGeometry(vertices, indices);
-}
-
-Geometry VisualFactoryCache::GetNPatchGeometry(BrokenImageType brokenImageType)
-{
-  Geometry          geometry;
-  const NPatchData* data;
-  if(mNPatchLoader.GetNPatchData(mBrokenImageInfoContainer[brokenImageType].npatchId, data) && data->GetLoadingState() == NPatchData::LoadingState::LOAD_COMPLETE)
-  {
-    if(data->GetStretchPixelsX().Size() == 1 && data->GetStretchPixelsY().Size() == 1)
-    {
-      geometry = GetGeometry(VisualFactoryCache::NINE_PATCH_GEOMETRY);
-      if(!geometry)
-      {
-        geometry = CreateNPatchGeometry(Uint16Pair(3,3));
-        SaveGeometry(VisualFactoryCache::NINE_PATCH_GEOMETRY, geometry);
-      }
-    }
-    else if(data->GetStretchPixelsX().Size() > 0 || data->GetStretchPixelsY().Size() > 0)
-    {
-      Uint16Pair gridSize(2 * data->GetStretchPixelsX().Size() + 1, 2 * data->GetStretchPixelsY().Size() + 1);
-      if(!data->GetRenderingMap())
-      {
-        geometry = CreateNPatchGeometry(gridSize);
-      }
-    }
-  }
-  else
-  {
-    // no N patch data so use default geometry
-    geometry = GetGeometry(VisualFactoryCache::NINE_PATCH_GEOMETRY);
-    if(!geometry)
-    {
-      geometry = CreateNPatchGeometry(Uint16Pair(3,3));
-      SaveGeometry(VisualFactoryCache::NINE_PATCH_GEOMETRY, geometry);
-    }
-  }
-  return geometry;
-}
-
-Shader VisualFactoryCache::GetNPatchShader(BrokenImageType brokenImageType)
-{
-  Shader            shader;
-  const NPatchData* data;
-  // 0 is either no data (load failed?) or no stretch regions on image
-  // for both cases we use the default shader
-  NPatchUtility::StretchRanges::SizeType xStretchCount = 0;
-  NPatchUtility::StretchRanges::SizeType yStretchCount = 0;
-
-  // ask loader for the regions
-  if(mNPatchLoader.GetNPatchData(mBrokenImageInfoContainer[brokenImageType].npatchId, data))
-  {
-    xStretchCount = data->GetStretchPixelsX().Count();
-    yStretchCount = data->GetStretchPixelsY().Count();
-  }
-
-  if(DALI_LIKELY((xStretchCount == 1 && yStretchCount == 1) ||
-                 (xStretchCount == 0 && yStretchCount == 0)))
-  {
-    shader = GetShader(VisualFactoryCache::NINE_PATCH_SHADER);
-    if(DALI_UNLIKELY(!shader))
-    {
-      shader = Shader::New(SHADER_NPATCH_VISUAL_3X3_SHADER_VERT, SHADER_NPATCH_VISUAL_SHADER_FRAG);
-
-      // Only cache vanilla 9 patch shaders
-      SaveShader(VisualFactoryCache::NINE_PATCH_SHADER, shader);
-    }
-  }
-  else if(xStretchCount > 0 || yStretchCount > 0)
-  {
-    std::stringstream vertexShader;
-    vertexShader << "#define FACTOR_SIZE_X " << xStretchCount + 2 << "\n"
-                 << "#define FACTOR_SIZE_Y " << yStretchCount + 2 << "\n"
-                 << SHADER_NPATCH_VISUAL_SHADER_VERT;
-    shader = Shader::New(vertexShader.str(), SHADER_NPATCH_VISUAL_SHADER_FRAG);
-  }
-  return shader;
-}
-
-void VisualFactoryCache::RegisterStretchProperties(Renderer& renderer, BrokenImageType brokenImageType, const char* uniformName, const NPatchUtility::StretchRanges& stretchPixels, uint16_t imageExtent)
-{
-  uint16_t     prevEnd     = 0;
-  uint16_t     prevFix     = 0;
-  uint16_t     prevStretch = 0;
-  unsigned int i           = 1;
-  for(NPatchUtility::StretchRanges::ConstIterator it = stretchPixels.Begin(); it != stretchPixels.End(); ++it, ++i)
-  {
-    uint16_t start = it->GetX();
-    uint16_t end   = it->GetY();
-
-    uint16_t fix     = prevFix + start - prevEnd;
-    uint16_t stretch = prevStretch + end - start;
-
-    std::stringstream uniform;
-    uniform << uniformName << "[" << i << "]";
-    renderer.RegisterProperty(uniform.str(), Vector2(fix, stretch));
-
-    prevEnd     = end;
-    prevFix     = fix;
-    prevStretch = stretch;
-  }
-
-  {
-    prevFix += imageExtent - prevEnd;
-    std::stringstream uniform;
-    uniform << uniformName << "[" << i << "]";
-    renderer.RegisterProperty(uniform.str(), Vector2(prevFix, prevStretch));
-  }
-}
-
-void VisualFactoryCache::ApplyTextureAndUniforms(Renderer& renderer, BrokenImageType brokenImageType)
-{
-  const NPatchData* data;
-  TextureSet        textureSet;
-  if(mNPatchLoader.GetNPatchData(mBrokenImageInfoContainer[brokenImageType].npatchId, data) && data->GetLoadingState() == NPatchData::LoadingState::LOAD_COMPLETE)
-  {
-    textureSet = data->GetTextures();
-    mBrokenImageInfoContainer[brokenImageType].texture = data->GetTextures().GetTexture(0);
-
-    if(data->GetStretchPixelsX().Size() == 1 && data->GetStretchPixelsY().Size() == 1)
-    {
-      //special case for 9 patch
-      Uint16Pair stretchX = data->GetStretchPixelsX()[0];
-      Uint16Pair stretchY = data->GetStretchPixelsY()[0];
-
-      uint16_t stretchWidth  = (stretchX.GetY() >= stretchX.GetX()) ? stretchX.GetY() - stretchX.GetX() : 0;
-      uint16_t stretchHeight = (stretchY.GetY() >= stretchY.GetX()) ? stretchY.GetY() - stretchY.GetX() : 0;
-
-      renderer.RegisterProperty("uFixed[0]", Vector2::ZERO);
-      renderer.RegisterProperty("uFixed[1]", Vector2(stretchX.GetX(), stretchY.GetX()));
-      renderer.RegisterProperty("uFixed[2]", Vector2(data->GetCroppedWidth() - stretchWidth, data->GetCroppedHeight() - stretchHeight));
-      renderer.RegisterProperty("uStretchTotal", Vector2(stretchWidth, stretchHeight));
-    }
-    else
-    {
-      renderer.RegisterProperty("uNinePatchFactorsX[0]", Vector2::ZERO);
-      renderer.RegisterProperty("uNinePatchFactorsY[0]", Vector2::ZERO);
-
-      RegisterStretchProperties(renderer, brokenImageType, "uNinePatchFactorsX", data->GetStretchPixelsX(), data->GetCroppedWidth());
-      RegisterStretchProperties(renderer, brokenImageType, "uNinePatchFactorsY", data->GetStretchPixelsY(), data->GetCroppedHeight());
-    }
-  }
-  else
-  {
-    textureSet = TextureSet::New();
-
-    Texture croppedImage = GetBrokenVisualImage(brokenImageType);
-    textureSet.SetTexture(0u, croppedImage);
-    renderer.RegisterProperty("uFixed[0]", Vector2::ZERO);
-    renderer.RegisterProperty("uFixed[1]", Vector2::ZERO);
-    renderer.RegisterProperty("uFixed[2]", Vector2::ZERO);
-    renderer.RegisterProperty("uStretchTotal", Vector2(croppedImage.GetWidth(), croppedImage.GetHeight()));
-  }
-
-  renderer.SetTextures(textureSet);
-}
-
-void VisualFactoryCache::GetBrokenImageRenderer(Renderer& renderer, const Vector2& size)
-{
-  BrokenImageType brokenImageType = GetProperBrokenImageType(size);
-
-  if(GetBrokenImageVisualType(brokenImageType) == VisualUrl::N_PATCH)
-  {
-    // Set geometry and shader for npatch
-    Geometry geometry = GetNPatchGeometry(brokenImageType);
-    Shader shader = GetNPatchShader(brokenImageType);
-    renderer.SetGeometry(geometry);
-    renderer.SetShader(shader);
-    ApplyTextureAndUniforms(renderer, brokenImageType);
-  }
-  else
-  {
-    Texture brokenImage = GetBrokenVisualImage(brokenImageType);
-    TextureSet textureSet = TextureSet::New();
-    textureSet.SetTexture(0u, brokenImage);
-    renderer.SetTextures(textureSet);
-  }
-}
-
-VisualFactoryCache::BrokenImageType VisualFactoryCache::GetProperBrokenImageType(const Vector2& size)
-{
-  // Sets the default broken type
-  BrokenImageType returnType = BrokenImageType::SMALL;
-
-  if((size.width == 0 && size.height == 0) || !mUseCustomBrokenImage )
-  {
-    // To do : Need to add observer about size
-    // Can't get size , just use default size of brokenImage
-    return returnType;
-  }
-
-  // Find the proper value if we know the size of the image
-  for(auto brokenImageIter = mBrokenImageInfoContainer.rbegin(); brokenImageIter != mBrokenImageInfoContainer.rend(); brokenImageIter++)
-  {
-    // Skip if the value is not set
-    if(brokenImageIter->width == 0 && brokenImageIter->height == 0)
-    {
-      continue;
-    }
-
-    if(brokenImageIter->width < size.width && brokenImageIter->height < size.height)
-    {
-      int index = std::distance(brokenImageIter,mBrokenImageInfoContainer.rend()-1);
-      returnType = (BrokenImageType)index;
-      break;
-    }
-  }
-
-  return returnType;
+  mAtlasManager->SetBrokenImage(mBrokenImageUrl);
 }
 
 } // namespace Internal
index d7e390f..6e8f37d 100644 (file)
@@ -28,7 +28,6 @@
 #include <dali-toolkit/internal/visuals/npatch-loader.h>
 #include <dali-toolkit/internal/visuals/svg/svg-rasterize-thread.h>
 #include <dali-toolkit/internal/visuals/texture-manager-impl.h>
-#include <dali/devel-api/rendering/renderer-devel.h>
 
 namespace Dali
 {
@@ -125,18 +124,7 @@ public:
     GEOMETRY_TYPE_MAX = WIREFRAME_GEOMETRY
   };
 
-  /**
-   * @brief The Type of BrokenImage
-   */
-  enum BrokenImageType
-  {
-    SMALL,
-    NORMAL,
-    LARGE
-  };
-
 public:
-
   /**
    * @brief Constructor
    *
@@ -189,6 +177,12 @@ public:
   static Geometry CreateGridGeometry(Uint16Pair gridSize);
 
   /**
+   * @brief Returns a new Texture to use when a visual has failed to correctly render
+   * @return The broken image texture.
+   */
+  Texture GetBrokenVisualImage();
+
+  /**
    * @copydoc Toolkit::VisualFactory::SetPreMultiplyOnLoad()
    */
   void SetPreMultiplyOnLoad(bool preMultiply);
@@ -199,32 +193,10 @@ public:
   bool GetPreMultiplyOnLoad();
 
   /**
-   * @brief Enable a custom broken image
-   *
-   * @param[in] enabled True if cache use custom broken image
-   */
-  void EnableCustomBrokenImage(bool enabled);
-
-  /**
    * @brief Set an image to be used when a visual has failed to correctly render
-   * @param[in] brokenImageType BrokenImage type
-   * @param[in] brokenImageUrl The broken image url
-   */
-  void SetBrokenImageUrl(BrokenImageType brokenImageType, const std::string& brokenImageUrl);
-
-  /**
-   * @brief Returns a broken image type
-   * @param[in] brokenImageType BrokenImage type
-   * @return The broken image type.
-   */
-  VisualUrl::Type GetBrokenImageVisualType(BrokenImageType brokenImageType);
-
-  /**
-   * @brief Get the Npatch Renderer object
-   * @param[in] renderer renderer for npatch
-   * @param[in] size     the size of actor
+   * @param[in] brokenImageUrl The broken image url.
    */
-  void GetBrokenImageRenderer(Renderer& renderer, const Vector2& size);
+  void SetBrokenImageUrl(const std::string& brokenImageUrl);
 
 public:
   /**
@@ -269,101 +241,17 @@ protected:
   VisualFactoryCache& operator=(const VisualFactoryCache& rhs);
 
 private:
-  /**
-   * @brief Returns a new Texture to use when a visual has failed to correctly render
-   * @return The broken image texture.
-   */
-  Texture GetBrokenVisualImage(BrokenImageType brokenImageType);
-
-  /**
-   * @brief Change the Proper broken image type
-   * @param[in] size The size of actor
-   *
-   * @return The type of broken image
-   */
-  BrokenImageType GetProperBrokenImageType(const Vector2& size);
-
-  /**
-   * @brief Apply a texture and uniforms
-   *
-   * @param renderer The renderer for broken image
-   * @param brokenImageType The type of broken image
-   */
-  void ApplyTextureAndUniforms(Renderer& renderer, BrokenImageType brokenImageType);
-
-  /**
-   * @brief Creates a Npatch Geometry object
-   *
-   * @param[in] gridSize The gridSize for creating a geometry
-   * @return The Geometry for NPatch
-   */
-  Geometry CreateNPatchGeometry(Uint16Pair gridSize);
-
-  /**
-   * @brief Gets a geometry for npatch image
-   *
-   * @param[in] brokenImageType the type of broken image
-   * @return The Geometry for NPatch
-   */
-  Geometry GetNPatchGeometry(BrokenImageType brokenImageType);
-
-  /**
-   * @brief Gets the Npatch Shader object
-   *
-   * @param[in] brokenImageType The type of broken image
-   * @return The Shader for NPatch
-   */
-  Shader GetNPatchShader(BrokenImageType brokenImageType);
-
-  /**
-   * @brief Registers a properties for Stretch Ranges
-   *
-   * @param renderer The renderer for broken image
-   * @param brokenImageType The type of broken image
-   * @param uniformName The name of the uniform
-   * @param stretchPixels The stretchable pixels in the cropped image space
-   * @param imageExtent The imageExtent
-   */
-  void RegisterStretchProperties(Renderer& renderer, BrokenImageType brokenImageType, const char* uniformName, const NPatchUtility::StretchRanges& stretchPixels, uint16_t imageExtent);
-
-private:
-  struct BrokenImageInfo
-  {
-    BrokenImageInfo()
-    :visualType(),
-     url(""),
-     npatchId(NPatchData::INVALID_NPATCH_DATA_ID),
-     texture(),
-     width(0),
-     height(0)
-    {
-    }
-
-    ~BrokenImageInfo()
-    {
-    }
-
-    // Data
-    VisualUrl::Type                         visualType;
-    std::string                             url;
-    NPatchData::NPatchDataId                npatchId;
-    Texture                                 texture;
-    uint32_t                                width;
-    uint32_t                                height;
-  };
-
   Geometry mGeometry[GEOMETRY_TYPE_MAX + 1];
   Shader   mShader[SHADER_TYPE_MAX + 1];
 
   ImageAtlasManagerPtr                    mAtlasManager;
   TextureManager                          mTextureManager;
   NPatchLoader                            mNPatchLoader;
-
+  Texture                                 mBrokenImageTexture;
   SvgRasterizeThread*                     mSvgRasterizeThread;
   std::unique_ptr<VectorAnimationManager> mVectorAnimationManager;
+  std::string                             mBrokenImageUrl;
   bool                                    mPreMultiplyOnLoad;
-  std::vector<BrokenImageInfo>            mBrokenImageInfoContainer;
-  bool                                    mUseCustomBrokenImage;
 };
 
 } // namespace Internal
index ab4a15b..8c4b2f8 100644 (file)
@@ -61,8 +61,6 @@ namespace
 Debug::Filter* gLogFilter = Debug::Filter::New(Debug::NoLogging, false, "LOG_CONTROL_VISUALS");
 #endif
 
-static constexpr int32_t COUNT_BROKEN_IMAGE_MAX = 3;
-
 BaseHandle Create()
 {
   BaseHandle handle = Toolkit::VisualFactory::Get();
@@ -93,7 +91,16 @@ void VisualFactory::OnStyleChangedSignal(Toolkit::StyleManager styleManager, Sty
 {
   if(type == StyleChange::THEME_CHANGE)
   {
-    SetBrokenImageUrl(styleManager);
+    const std::string imageDirPath   = AssetManager::GetDaliImagePath();
+    std::string       brokenImageUrl = imageDirPath + BROKEN_IMAGE_FILE_NAME;
+
+    Property::Map config = Toolkit::DevelStyleManager::GetConfigurations(styleManager);
+    config["brokenImageUrl"].Get(brokenImageUrl);
+
+    if(mFactoryCache)
+    {
+      mFactoryCache->SetBrokenImageUrl(brokenImageUrl);
+    }
   }
 }
 
@@ -363,65 +370,24 @@ Internal::TextureManager& VisualFactory::GetTextureManager()
   return GetFactoryCache().GetTextureManager();
 }
 
-void VisualFactory::SetBrokenImageUrl(Toolkit::StyleManager& styleManager)
+Internal::VisualFactoryCache& VisualFactory::GetFactoryCache()
 {
-  const std::string imageDirPath   = AssetManager::GetDaliImagePath();
-  std::string       brokenImageUrl = imageDirPath + BROKEN_IMAGE_FILE_NAME;
-  std::string       customBrokenImageUrl[COUNT_BROKEN_IMAGE_MAX];
-
-  if(styleManager)
+  if(!mFactoryCache)
   {
-    Property::Map config = Toolkit::DevelStyleManager::GetConfigurations(styleManager);
-    config["brokenImageUrl"].Get(brokenImageUrl);
-    styleManager.StyleChangedSignal().Connect(mSlotDelegate, &VisualFactory::OnStyleChangedSignal);
-
-    bool findCustomBrokenImage = false;
-    for(int i=0;i<COUNT_BROKEN_IMAGE_MAX;i++)
-    {
-      customBrokenImageUrl[i] = Toolkit::DevelStyleManager::GetBrokenImageUrl(styleManager,Toolkit::DevelStyleManager::BrokenImageType(i));
-      if(!customBrokenImageUrl[i].empty())
-      {
-        findCustomBrokenImage = true;
-      }
-    }
+    mFactoryCache = std::unique_ptr<VisualFactoryCache>(new VisualFactoryCache(mPreMultiplyOnLoad));
 
-    if(findCustomBrokenImage)
-    {
-      std::string customDefaultBrokenUrl = "";
-      mFactoryCache->EnableCustomBrokenImage(true);
-      customDefaultBrokenUrl = customBrokenImageUrl[0];
+    const std::string imageDirPath   = AssetManager::GetDaliImagePath();
+    std::string       brokenImageUrl = imageDirPath + BROKEN_IMAGE_FILE_NAME;
 
-      for(int i=0;i<COUNT_BROKEN_IMAGE_MAX;i++)
-      {
-        if(customDefaultBrokenUrl.empty())
-        {
-          if(!customBrokenImageUrl[i].empty())
-          {
-            customDefaultBrokenUrl = customBrokenImageUrl[i];
-            mFactoryCache->SetBrokenImageUrl(Toolkit::Internal::VisualFactoryCache::BrokenImageType::SMALL, customBrokenImageUrl[i]);
-          }
-        }
-        mFactoryCache->SetBrokenImageUrl(Toolkit::Internal::VisualFactoryCache::BrokenImageType(i), customBrokenImageUrl[i]);
-      }
-    }
-    else
+    Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get();
+    if(styleManager)
     {
-      mFactoryCache->SetBrokenImageUrl(Toolkit::Internal::VisualFactoryCache::BrokenImageType::SMALL, brokenImageUrl);
+      Property::Map config = Toolkit::DevelStyleManager::GetConfigurations(styleManager);
+      config["brokenImageUrl"].Get(brokenImageUrl);
+      styleManager.StyleChangedSignal().Connect(mSlotDelegate, &VisualFactory::OnStyleChangedSignal);
     }
-  }
-  else
-  {
-    mFactoryCache->SetBrokenImageUrl(Toolkit::Internal::VisualFactoryCache::BrokenImageType::SMALL, brokenImageUrl);
-  }
-}
 
-Internal::VisualFactoryCache& VisualFactory::GetFactoryCache()
-{
-  if(!mFactoryCache)
-  {
-    mFactoryCache = std::unique_ptr<VisualFactoryCache>(new VisualFactoryCache(mPreMultiplyOnLoad));
-    Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get();
-    SetBrokenImageUrl(styleManager);
+    mFactoryCache->SetBrokenImageUrl(brokenImageUrl);
   }
   return *mFactoryCache;
 }
index 670567b..f038301 100644 (file)
@@ -90,12 +90,6 @@ protected:
 
 private:
   /**
-   * @brief Set the Broken Image url
-   *
-   */
-  void SetBrokenImageUrl(Toolkit::StyleManager& styleManager);
-
-  /**
    * Get the factory cache, creating it if necessary.
    */
   Internal::VisualFactoryCache& GetFactoryCache();