X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fvisual-factory-impl.cpp;h=a4b0a0abc24eebb63332df3b1d7bf89a6465833c;hp=8c4b2f8d129a8fec8614eb9a4aa36d8baedd21b2;hb=faef4e5740c0024bf3041182a799a2d2395c8787;hpb=c052b6678e2c6d8a65545dbbe4531ea7057c1999 diff --git a/dali-toolkit/internal/visuals/visual-factory-impl.cpp b/dali-toolkit/internal/visuals/visual-factory-impl.cpp index 8c4b2f8..a4b0a0a 100644 --- a/dali-toolkit/internal/visuals/visual-factory-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-factory-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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. @@ -91,19 +91,15 @@ void VisualFactory::OnStyleChangedSignal(Toolkit::StyleManager styleManager, Sty { if(type == StyleChange::THEME_CHANGE) { - 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); - } + SetBrokenImageUrl(styleManager); } } +void VisualFactory::OnBrokenImageChangedSignal(Toolkit::StyleManager styleManager) +{ + SetBrokenImageUrl(styleManager); +} + Toolkit::Visual::Base VisualFactory::CreateVisual(const Property::Map& propertyMap) { Visual::BasePtr visualPtr; @@ -154,6 +150,7 @@ Toolkit::Visual::Base VisualFactory::CreateVisual(const Property::Map& propertyM visualPtr = NPatchVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl, propertyMap); break; } + case VisualUrl::TVG: case VisualUrl::SVG: { visualPtr = SvgVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl, propertyMap); @@ -181,7 +178,7 @@ Toolkit::Visual::Base VisualFactory::CreateVisual(const Property::Map& propertyM else { Property::Array* array = imageURLValue->GetArray(); - if(array) + if(array && array->Count() > 0) { visualPtr = AnimatedImageVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), *array, propertyMap); } @@ -220,7 +217,10 @@ Toolkit::Visual::Base VisualFactory::CreateVisual(const Property::Map& propertyM std::string imageUrl; if(imageURLValue && imageURLValue->Get(imageUrl)) { - visualPtr = NPatchVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), imageUrl, propertyMap); + if(!imageUrl.empty()) + { + visualPtr = NPatchVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), imageUrl, propertyMap); + } } break; } @@ -231,7 +231,10 @@ Toolkit::Visual::Base VisualFactory::CreateVisual(const Property::Map& propertyM std::string imageUrl; if(imageURLValue && imageURLValue->Get(imageUrl)) { - visualPtr = SvgVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), imageUrl, propertyMap); + if(!imageUrl.empty()) + { + visualPtr = SvgVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), imageUrl, propertyMap); + } } break; } @@ -244,12 +247,15 @@ Toolkit::Visual::Base VisualFactory::CreateVisual(const Property::Map& propertyM { if(imageURLValue->Get(imageUrl)) { - visualPtr = AnimatedImageVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), imageUrl, propertyMap); + if(!imageUrl.empty()) + { + visualPtr = AnimatedImageVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), imageUrl, propertyMap); + } } else { Property::Array* array = imageURLValue->GetArray(); - if(array) + if(array && array->Count() > 0) { visualPtr = AnimatedImageVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), *array, propertyMap); } @@ -270,7 +276,10 @@ Toolkit::Visual::Base VisualFactory::CreateVisual(const Property::Map& propertyM std::string imageUrl; if(imageURLValue && imageURLValue->Get(imageUrl)) { - visualPtr = AnimatedVectorImageVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), imageUrl, propertyMap); + if(!imageUrl.empty()) + { + visualPtr = AnimatedVectorImageVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), imageUrl, propertyMap); + } } break; } @@ -318,6 +327,7 @@ Toolkit::Visual::Base VisualFactory::CreateVisual(const std::string& url, ImageD visualPtr = NPatchVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl); break; } + case VisualUrl::TVG: case VisualUrl::SVG: { visualPtr = SvgVisual::New(GetFactoryCache(), GetImageVisualShaderFactory(), visualUrl); @@ -370,24 +380,39 @@ Internal::TextureManager& VisualFactory::GetTextureManager() return GetFactoryCache().GetTextureManager(); } -Internal::VisualFactoryCache& VisualFactory::GetFactoryCache() +void VisualFactory::SetBrokenImageUrl(Toolkit::StyleManager& styleManager) { - if(!mFactoryCache) + const std::string imageDirPath = AssetManager::GetDaliImagePath(); + std::string brokenImageUrl = imageDirPath + BROKEN_IMAGE_FILE_NAME; + std::vector customBrokenImageUrlList; + + if(styleManager) { - mFactoryCache = std::unique_ptr(new VisualFactoryCache(mPreMultiplyOnLoad)); + customBrokenImageUrlList = Toolkit::DevelStyleManager::GetBrokenImageUrlList(styleManager); + const Property::Map& config = Toolkit::DevelStyleManager::GetConfigurations(styleManager); + const auto brokenImageUrlValue = config.Find("brokenImageUrl", Property::Type::STRING); + if(brokenImageUrlValue) + { + brokenImageUrlValue->Get(brokenImageUrl); + } + } - const std::string imageDirPath = AssetManager::GetDaliImagePath(); - std::string brokenImageUrl = imageDirPath + BROKEN_IMAGE_FILE_NAME; + // Add default image + mFactoryCache->SetBrokenImageUrl(brokenImageUrl, customBrokenImageUrlList); +} +Internal::VisualFactoryCache& VisualFactory::GetFactoryCache() +{ + if(!mFactoryCache) + { + mFactoryCache = std::unique_ptr(new VisualFactoryCache(mPreMultiplyOnLoad)); Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get(); if(styleManager) { - Property::Map config = Toolkit::DevelStyleManager::GetConfigurations(styleManager); - config["brokenImageUrl"].Get(brokenImageUrl); styleManager.StyleChangedSignal().Connect(mSlotDelegate, &VisualFactory::OnStyleChangedSignal); + Toolkit::DevelStyleManager::BrokenImageChangedSignal(styleManager).Connect(mSlotDelegate, &VisualFactory::OnBrokenImageChangedSignal); } - - mFactoryCache->SetBrokenImageUrl(brokenImageUrl); + SetBrokenImageUrl(styleManager); } return *mFactoryCache; }