From: Eunki, Hong Date: Mon, 14 Jun 2021 23:55:47 +0000 (+0900) Subject: Add borderline features at transition effect X-Git-Tag: dali_2.0.35~7^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=8e2fd34769d0e9657a0e13776b405c5229775bc1 Add borderline features at transition effect Now BORDERLINE_XXX can be used at transition. Change-Id: Ib5eb83ce61379dc25f8820e3140be0db811cf575 Signed-off-by: Eunki, Hong --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Transition.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Transition.cpp index b694a69..955e15e 100755 --- a/automated-tests/src/dali-toolkit/utc-Dali-Transition.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Transition.cpp @@ -94,6 +94,9 @@ int UtcDaliTransitionSetGetProperty01(void) controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR); controlProperty1.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f)); controlProperty1.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 50.f); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 50.f); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f)); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, 1.f); control1.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty1); Control control2 = Control::New(); @@ -104,6 +107,9 @@ int UtcDaliTransitionSetGetProperty01(void) controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR); controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f)); controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 30.f); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 30.f); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f)); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, -1.f); control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2); application.GetScene().Add(control1); @@ -148,6 +154,9 @@ int UtcDaliTransitionSetGetProperty02(void) controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR); controlProperty1.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f)); controlProperty1.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, Vector4(50.0f, 30.0f, 40.0f, 20.0f)); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 50.f); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f)); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, -1.f); control1.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty1); Control control2 = Control::New(); @@ -158,6 +167,9 @@ int UtcDaliTransitionSetGetProperty02(void) controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR); controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f)); controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, Vector4(32.f, 54.0f, 24.0f, 42.0f)); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 30.f); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f)); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, -1.f); control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2); application.GetScene().Add(control1); @@ -200,6 +212,9 @@ int UtcDaliTransitionBetweenControlPair(void) Vector4 destinationColor(1.0f, 0.5f, 1.0f, 0.8f); float destinationOpacity(0.8f); float destinationRadius(50.f); + float destinationBorderlineWidth(80.0f); + Vector4 destinationBorderlineColor(0.5f, 1.0f, 0.5f, 0.3f); + float destinationBorderlineOffset(-1.0f); Vector4 destinationRadiusV4 = Vector4(destinationRadius, destinationRadius, destinationRadius, destinationRadius); Control control1 = Control::New(); @@ -214,6 +229,9 @@ int UtcDaliTransitionBetweenControlPair(void) controlProperty1.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR); controlProperty1.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f)); controlProperty1.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 30.f); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 60.f); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f)); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, 1.f); control1.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty1); Control control2 = Control::New(); @@ -228,12 +246,21 @@ int UtcDaliTransitionBetweenControlPair(void) controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR); controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f)); controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, destinationRadius); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, destinationBorderlineWidth); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, destinationBorderlineColor); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, destinationBorderlineOffset); control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2); DALI_TEST_EQUALS(destinationPosition, control2.GetProperty(Actor::Property::POSITION), TEST_LOCATION); Property::Map backgroundMap = control2.GetProperty(Toolkit::Control::Property::BACKGROUND); Vector4 cornerRadius = backgroundMap.Find(Toolkit::DevelVisual::Property::CORNER_RADIUS)->Get(); DALI_TEST_EQUALS(destinationRadiusV4, cornerRadius, TEST_LOCATION); + float borderlineWidth = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH)->Get(); + DALI_TEST_EQUALS(destinationBorderlineWidth, borderlineWidth, TEST_LOCATION); + Vector4 borderlineColor = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_COLOR)->Get(); + DALI_TEST_EQUALS(destinationBorderlineColor, borderlineColor, TEST_LOCATION); + float borderlineOffset = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET)->Get(); + DALI_TEST_EQUALS(destinationBorderlineOffset, borderlineOffset, TEST_LOCATION); application.GetScene().Add(control1); application.GetScene().Add(control2); @@ -263,6 +290,15 @@ int UtcDaliTransitionBetweenControlPair(void) Property::Index index = renderer.GetPropertyIndex(DevelVisual::Property::CORNER_RADIUS); cornerRadius = renderer.GetCurrentProperty(index); DALI_TEST_NOT_EQUALS(destinationRadiusV4, cornerRadius, 0.00001f, TEST_LOCATION); + index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_WIDTH); + borderlineWidth = renderer.GetCurrentProperty(index); + DALI_TEST_NOT_EQUALS(destinationBorderlineWidth, borderlineWidth, 0.00001f, TEST_LOCATION); + index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_COLOR); + borderlineColor = renderer.GetCurrentProperty(index); + DALI_TEST_NOT_EQUALS(destinationBorderlineColor, borderlineColor, 0.00001f, TEST_LOCATION); + index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_OFFSET); + borderlineOffset = renderer.GetCurrentProperty(index); + DALI_TEST_NOT_EQUALS(destinationBorderlineOffset, borderlineOffset, 0.00001f, TEST_LOCATION); application.SendNotification(); application.Render(700); @@ -284,6 +320,15 @@ int UtcDaliTransitionBetweenControlPair(void) index = renderer.GetPropertyIndex(DevelVisual::Property::CORNER_RADIUS); cornerRadius = renderer.GetCurrentProperty(index); DALI_TEST_EQUALS(destinationRadiusV4, cornerRadius, TEST_LOCATION); + index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_WIDTH); + borderlineWidth = renderer.GetCurrentProperty(index); + DALI_TEST_EQUALS(destinationBorderlineWidth, borderlineWidth, TEST_LOCATION); + index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_COLOR); + borderlineColor = renderer.GetCurrentProperty(index); + DALI_TEST_EQUALS(destinationBorderlineColor, borderlineColor, TEST_LOCATION); + index = renderer.GetPropertyIndex(DevelVisual::Property::BORDERLINE_OFFSET); + borderlineOffset = renderer.GetCurrentProperty(index); + DALI_TEST_EQUALS(destinationBorderlineOffset, borderlineOffset, TEST_LOCATION); END_TEST; } @@ -294,6 +339,9 @@ int UtcDaliTransitionBetweenControlPairWithoutEmptySourceBackground(void) tet_infoline(" UtcDaliTransitionBetweenControlPair"); Vector4 destinationRadius(50.f, 30.f, 40.f, 0.f); + float destinationBorderlineWidth(40.f); + Vector4 destinationBorderlineColor(1.0f, 0.5f, 0.2f, 0.8f); + float destinationBorderlineOffset(1.f); Control control1 = Control::New(); control1.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT); @@ -308,11 +356,20 @@ int UtcDaliTransitionBetweenControlPairWithoutEmptySourceBackground(void) controlProperty2.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR); controlProperty2.Insert(Toolkit::ColorVisual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.0f, 0.5f)); controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, destinationRadius); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, destinationBorderlineWidth); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, destinationBorderlineColor); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, destinationBorderlineOffset); control2.SetProperty(Toolkit::Control::Property::BACKGROUND, controlProperty2); Property::Map backgroundMap = control2.GetProperty(Toolkit::Control::Property::BACKGROUND); Vector4 cornerRadius = backgroundMap.Find(Toolkit::DevelVisual::Property::CORNER_RADIUS)->Get(); DALI_TEST_EQUALS(destinationRadius, cornerRadius, TEST_LOCATION); + float borderlineWidth = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH)->Get(); + DALI_TEST_EQUALS(destinationBorderlineWidth, borderlineWidth, TEST_LOCATION); + Vector4 borderlineColor = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_COLOR)->Get(); + DALI_TEST_EQUALS(destinationBorderlineColor, borderlineColor, TEST_LOCATION); + float borderlineOffset = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET)->Get(); + DALI_TEST_EQUALS(destinationBorderlineOffset, borderlineOffset, TEST_LOCATION); application.GetScene().Add(control1); application.GetScene().Add(control2); @@ -339,6 +396,12 @@ int UtcDaliTransitionBetweenControlPairWithoutEmptySourceBackground(void) backgroundMap = control2.GetProperty(Toolkit::Control::Property::BACKGROUND); cornerRadius = backgroundMap.Find(Toolkit::DevelVisual::Property::CORNER_RADIUS)->Get(); DALI_TEST_EQUALS(destinationRadius, cornerRadius, TEST_LOCATION); + borderlineWidth = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH)->Get(); + DALI_TEST_EQUALS(destinationBorderlineWidth, borderlineWidth, TEST_LOCATION); + borderlineColor = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_COLOR)->Get(); + DALI_TEST_EQUALS(destinationBorderlineColor, borderlineColor, TEST_LOCATION); + borderlineOffset = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET)->Get(); + DALI_TEST_EQUALS(destinationBorderlineOffset, borderlineOffset, TEST_LOCATION); application.SendNotification(); application.Render(700); @@ -353,6 +416,12 @@ int UtcDaliTransitionBetweenControlPairWithoutEmptySourceBackground(void) backgroundMap = control2.GetProperty(Toolkit::Control::Property::BACKGROUND); cornerRadius = backgroundMap.Find(Toolkit::DevelVisual::Property::CORNER_RADIUS)->Get(); DALI_TEST_EQUALS(destinationRadius, cornerRadius, TEST_LOCATION); + borderlineWidth = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH)->Get(); + DALI_TEST_EQUALS(destinationBorderlineWidth, borderlineWidth, TEST_LOCATION); + borderlineColor = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_COLOR)->Get(); + DALI_TEST_EQUALS(destinationBorderlineColor, borderlineColor, TEST_LOCATION); + borderlineOffset = backgroundMap.Find(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET)->Get(); + DALI_TEST_EQUALS(destinationBorderlineOffset, borderlineOffset, TEST_LOCATION); END_TEST; } @@ -374,6 +443,9 @@ int UtcDaliTransitionBetweenImageViewPair(void) controlProperty1.Insert(Toolkit::ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME); controlProperty1.Insert(Toolkit::Visual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.5f, 0.5f)); controlProperty1.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 50.f); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 50.f); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f)); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, 1.f); control1.SetProperty(Toolkit::ImageView::Property::IMAGE, controlProperty1); ImageView control2 = ImageView::New(); @@ -386,6 +458,9 @@ int UtcDaliTransitionBetweenImageViewPair(void) controlProperty2.Insert(Toolkit::ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME); controlProperty2.Insert(Toolkit::Visual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 1.0f, 1.0f)); controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 30.f); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 30.f); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(0.0f, 1.0f, 1.0f, 0.5f)); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, -1.f); control2.SetProperty(Toolkit::ImageView::Property::IMAGE, controlProperty2); DALI_TEST_EQUALS(destinationPosition, control2.GetProperty(Actor::Property::POSITION), TEST_LOCATION); @@ -456,6 +531,9 @@ int UtcDaliTransitionBetweenImageViewPairWithDelay(void) controlProperty1.Insert(Toolkit::ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME); controlProperty1.Insert(Toolkit::Visual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 0.5f, 0.5f)); controlProperty1.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 50.f); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 50.f); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(1.0f, 0.0f, 0.0f, 1.0f)); + controlProperty1.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, 1.f); control1.SetProperty(Toolkit::ImageView::Property::IMAGE, controlProperty1); ImageView control2 = ImageView::New(); @@ -468,6 +546,9 @@ int UtcDaliTransitionBetweenImageViewPairWithDelay(void) controlProperty2.Insert(Toolkit::ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME); controlProperty2.Insert(Toolkit::Visual::Property::MIX_COLOR, Vector4(1.0f, 1.0f, 1.0f, 1.0f)); controlProperty2.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, 30.f); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, 30.f); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, Vector4(0.0f, 1.0f, 1.0f, 0.5f)); + controlProperty2.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, -1.f); control2.SetProperty(Toolkit::ImageView::Property::IMAGE, controlProperty2); DALI_TEST_EQUALS(destinationPosition, control2.GetProperty(Actor::Property::POSITION), TEST_LOCATION); diff --git a/dali-toolkit/internal/controls/control/control-data-impl.cpp b/dali-toolkit/internal/controls/control/control-data-impl.cpp index 33670d6..fff128c 100644 --- a/dali-toolkit/internal/controls/control/control-data-impl.cpp +++ b/dali-toolkit/internal/controls/control/control-data-impl.cpp @@ -1830,30 +1830,51 @@ void Control::Impl::MakeVisualTransition(Dali::Animation& animation, Dali::Toolk Vector4 mixColor(1.0f, 1.0f, 1.0f, 1.0f); Vector4 cornerRadius(0.0f, 0.0f, 0.0f, 0.0f); + float borderlineWidth(0.0f); + Vector4 borderlineColor(0.0f, 0.0f, 0.0f, 1.0f); + float borderlineOffset(0.0f); if(!destinationMap.Empty()) { - static auto findValue = [](const Property::Map& map, Property::Index index) -> Vector4 { + static auto findValueVector4 = [](const Property::Map& map, Property::Index index, const Vector4& defaultValue = Vector4()) -> Vector4 { Property::Value* propertyValue = map.Find(index); if(propertyValue) { return propertyValue->Get(); } - return Vector4{}; + return defaultValue; }; - mixColor = findValue(destinationMap, Dali::Toolkit::Visual::Property::MIX_COLOR); - cornerRadius = findValue(destinationMap, Toolkit::DevelVisual::Property::CORNER_RADIUS); + static auto findValueFloat = [](const Property::Map& map, Property::Index index, const float& defaultValue = 0.0f) -> float { + Property::Value* propertyValue = map.Find(index); + if(propertyValue) + { + return propertyValue->Get(); + } + return defaultValue; + }; + + mixColor = findValueVector4(destinationMap, Dali::Toolkit::Visual::Property::MIX_COLOR, mixColor); + cornerRadius = findValueVector4(destinationMap, Toolkit::DevelVisual::Property::CORNER_RADIUS, cornerRadius); + borderlineWidth = findValueFloat(destinationMap, Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, borderlineWidth); + borderlineColor = findValueVector4(destinationMap, Toolkit::DevelVisual::Property::BORDERLINE_COLOR, borderlineColor); + borderlineOffset = findValueFloat(destinationMap, Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, borderlineOffset); if(sourceMap.Empty()) { sourceMap.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::COLOR); sourceMap.Insert(Dali::Toolkit::Visual::Property::MIX_COLOR, Color::TRANSPARENT); sourceMap.Insert(Toolkit::DevelVisual::Property::CORNER_RADIUS, cornerRadius); + sourceMap.Insert(Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, borderlineWidth); + sourceMap.Insert(Toolkit::DevelVisual::Property::BORDERLINE_COLOR, borderlineColor); + sourceMap.Insert(Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, borderlineOffset); } - Vector4 sourceMixColor = findValue(sourceMap, Dali::Toolkit::Visual::Property::MIX_COLOR); - Vector4 sourceCornerRadius = findValue(sourceMap, Toolkit::DevelVisual::Property::CORNER_RADIUS); + Vector4 sourceMixColor = findValueVector4(sourceMap, Dali::Toolkit::Visual::Property::MIX_COLOR, mixColor); + Vector4 sourceCornerRadius = findValueVector4(sourceMap, Toolkit::DevelVisual::Property::CORNER_RADIUS, cornerRadius); + float sourceBorderlineWidth = findValueFloat(sourceMap, Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, borderlineWidth); + Vector4 sourceBorderlineColor = findValueVector4(sourceMap, Toolkit::DevelVisual::Property::BORDERLINE_COLOR, borderlineColor); + float sourceBorderlineOffset = findValueFloat(sourceMap, Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, borderlineOffset); std::vector properties; std::vector> values; @@ -1876,6 +1897,24 @@ void Control::Impl::MakeVisualTransition(Dali::Animation& animation, Dali::Toolk values.push_back(std::make_pair(sourceCornerRadius, cornerRadius)); } + if(sourceBorderlineWidth != borderlineWidth) + { + properties.push_back(GetVisualProperty(visualIndex, Dali::Toolkit::DevelVisual::Property::BORDERLINE_WIDTH)); + values.push_back(std::make_pair(sourceBorderlineWidth, borderlineWidth)); + } + + if(sourceBorderlineColor != borderlineColor) + { + properties.push_back(GetVisualProperty(visualIndex, Dali::Toolkit::DevelVisual::Property::BORDERLINE_COLOR)); + values.push_back(std::make_pair(sourceBorderlineColor, borderlineColor)); + } + + if(sourceBorderlineOffset != borderlineOffset) + { + properties.push_back(GetVisualProperty(visualIndex, Dali::Toolkit::DevelVisual::Property::BORDERLINE_OFFSET)); + values.push_back(std::make_pair(sourceBorderlineOffset, borderlineOffset)); + } + for(uint32_t i = 0; i < properties.size(); ++i) { if(timePeriod.delaySeconds > 0.0f) diff --git a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp index f49f82d..e3701ec 100644 --- a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp +++ b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp @@ -297,19 +297,34 @@ void ImageView::OnCreateTransitions(Dali::Animation& animation, Dali::Toolkit::C destinationVisual.CreatePropertyMap(destinationMap); - static auto findValue = [](const Property::Map& map, Property::Index index) -> Vector4 { + static auto findValueVector4 = [](const Property::Map& map, Property::Index index, const Vector4& defaultValue = Vector4()) -> Vector4 { Property::Value* propertyValue = map.Find(index); if(propertyValue) { return propertyValue->Get(); } - return Vector4{}; + return defaultValue; + }; + + static auto findValueFloat = [](const Property::Map& map, Property::Index index, const float& defaultValue = 0.0f) -> float { + Property::Value* propertyValue = map.Find(index); + if(propertyValue) + { + return propertyValue->Get(); + } + return defaultValue; }; Vector4 sourceMixColor(0.0f, 0.0f, 0.0f, 0.0f); Vector4 sourceCornerRadius(0.0f, 0.0f, 0.0f, 0.0f); - Vector4 destinationMixColor = findValue(destinationMap, Dali::Toolkit::Visual::Property::MIX_COLOR); - Vector4 destinationCornerRadius = findValue(destinationMap, Toolkit::DevelVisual::Property::CORNER_RADIUS); + float sourceBorderlineWidth(0.0f); + Vector4 sourceBorderlineColor(0.0f, 0.0f, 0.0f, 1.0f); + float sourceBorderlineOffset(0.0f); + Vector4 destinationMixColor = findValueVector4(destinationMap, Dali::Toolkit::Visual::Property::MIX_COLOR, sourceMixColor); + Vector4 destinationCornerRadius = findValueVector4(destinationMap, Toolkit::DevelVisual::Property::CORNER_RADIUS, sourceCornerRadius); + float destinationBorderlineWidth = findValueFloat(destinationMap, Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, sourceBorderlineWidth); + Vector4 destinationBorderlineColor = findValueVector4(destinationMap, Toolkit::DevelVisual::Property::BORDERLINE_COLOR, sourceBorderlineColor); + float destinationBorderlineOffset = findValueFloat(destinationMap, Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, sourceBorderlineOffset); Dali::Toolkit::ImageView sourceHandle = Dali::Toolkit::ImageView::DownCast(source); Toolkit::Visual::Base sourceVisual; @@ -323,8 +338,11 @@ void ImageView::OnCreateTransitions(Dali::Animation& animation, Dali::Toolkit::C if(sourceVisual) { sourceVisual.CreatePropertyMap(sourceMap); - sourceMixColor = findValue(sourceMap, Dali::Toolkit::Visual::Property::MIX_COLOR); - sourceCornerRadius = findValue(sourceMap, Toolkit::DevelVisual::Property::CORNER_RADIUS); + sourceMixColor = findValueVector4(sourceMap, Dali::Toolkit::Visual::Property::MIX_COLOR, sourceMixColor); + sourceCornerRadius = findValueVector4(sourceMap, Toolkit::DevelVisual::Property::CORNER_RADIUS, sourceCornerRadius); + sourceBorderlineWidth = findValueFloat(sourceMap, Toolkit::DevelVisual::Property::BORDERLINE_WIDTH, sourceBorderlineWidth); + sourceBorderlineColor = findValueVector4(sourceMap, Toolkit::DevelVisual::Property::BORDERLINE_COLOR, sourceBorderlineColor); + sourceBorderlineOffset = findValueFloat(sourceMap, Toolkit::DevelVisual::Property::BORDERLINE_OFFSET, sourceBorderlineOffset); } std::vector properties; @@ -345,6 +363,21 @@ void ImageView::OnCreateTransitions(Dali::Animation& animation, Dali::Toolkit::C properties.push_back(DevelControl::GetVisualProperty(destinationHandle, Toolkit::ImageView::Property::IMAGE, Toolkit::DevelVisual::Property::CORNER_RADIUS)); values.push_back(std::make_pair(sourceCornerRadius, destinationCornerRadius)); } + if(sourceBorderlineWidth != destinationBorderlineWidth) + { + properties.push_back(DevelControl::GetVisualProperty(destinationHandle, Toolkit::ImageView::Property::IMAGE, Toolkit::DevelVisual::Property::BORDERLINE_WIDTH)); + values.push_back(std::make_pair(sourceBorderlineWidth, destinationBorderlineWidth)); + } + if(sourceBorderlineColor != destinationBorderlineColor) + { + properties.push_back(DevelControl::GetVisualProperty(destinationHandle, Toolkit::ImageView::Property::IMAGE, Toolkit::DevelVisual::Property::BORDERLINE_COLOR)); + values.push_back(std::make_pair(sourceBorderlineColor, destinationBorderlineColor)); + } + if(sourceBorderlineOffset != destinationBorderlineOffset) + { + properties.push_back(DevelControl::GetVisualProperty(destinationHandle, Toolkit::ImageView::Property::IMAGE, Toolkit::DevelVisual::Property::BORDERLINE_OFFSET)); + values.push_back(std::make_pair(sourceBorderlineOffset, destinationBorderlineOffset)); + } for(uint32_t i = 0; i < properties.size(); ++i) {