From: Richard Huang Date: Fri, 10 Dec 2021 11:59:44 +0000 (+0000) Subject: [dali_2.1.2] Merge branch 'devel/master' X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=ca4aa840d5872f9b174fb32d8886e772389cabcb;hp=364e965c1bd87ea7906d920cf3a082d1c688d315 [dali_2.1.2] Merge branch 'devel/master' Change-Id: Ibf553bcefdfcace71b5c2c3a3d647ffe3a57584c --- diff --git a/dali-toolkit/devel-api/controls/accessible-impl.cpp b/dali-toolkit/devel-api/controls/accessible-impl.cpp index a962abf..e01bcb5 100644 --- a/dali-toolkit/devel-api/controls/accessible-impl.cpp +++ b/dali-toolkit/devel-api/controls/accessible-impl.cpp @@ -536,23 +536,16 @@ std::vector AccessibleImpl::GetRelationSet() std::vector ret; - auto& relations = controlImpl.mAccessibilityRelations; - for(auto i = 0u; i < relations.size(); ++i) + for(auto& relation : controlImpl.mAccessibilityRelations) { - auto& relation = relations[i]; + auto& targets = relation.second; - if(relation.empty()) - { - continue; - } + ret.emplace_back(Accessibility::Relation{relation.first, {}}); // Map every Accessible* to its Address - std::vector targets; - std::transform(relation.begin(), relation.end(), std::back_inserter(targets), [](auto* x) { + std::transform(targets.begin(), targets.end(), std::back_inserter(ret.back().targets), [](auto* x) { return x->GetAddress(); }); - - ret.emplace_back(Accessibility::Relation{static_cast(i), std::move(targets)}); } return ret; diff --git a/dali-toolkit/devel-api/controls/control-devel.cpp b/dali-toolkit/devel-api/controls/control-devel.cpp index ccf624b..7b497c9 100644 --- a/dali-toolkit/devel-api/controls/control-devel.cpp +++ b/dali-toolkit/devel-api/controls/control-devel.cpp @@ -183,17 +183,10 @@ void AppendAccessibilityRelation(Dali::Actor control, Actor destination, Dali::A { if(auto controlDataImpl = GetControlImplementation(control)) { - auto index = static_cast(relation); - if(index >= controlDataImpl->mAccessibilityRelations.size()) - { - DALI_LOG_ERROR("Relation index exceeds vector size."); - return; - } - auto object = controlDataImpl->GetAccessibilityObject(destination); if(object) { - controlDataImpl->mAccessibilityRelations[index].push_back(object); + controlDataImpl->mAccessibilityRelations[relation].insert(object); } } } @@ -202,27 +195,16 @@ void RemoveAccessibilityRelation(Dali::Actor control, Actor destination, Dali::A { if(auto controlDataImpl = GetControlImplementation(control)) { - auto index = static_cast(relation); - if(index >= controlDataImpl->mAccessibilityRelations.size()) - { - DALI_LOG_ERROR("Relation index exceeds vector size."); - return; - } - auto object = controlDataImpl->GetAccessibilityObject(destination); - if(!object) + if(object) { - return; - } + auto& relations = controlDataImpl->mAccessibilityRelations; - auto& targets = controlDataImpl->mAccessibilityRelations[index]; - for(auto i = 0u; i < targets.size(); ++i) - { - if(targets[i] == object) + relations[relation].erase(object); + + if(relations[relation].empty()) { - std::swap(targets[i], targets.back()); - targets.pop_back(); - --i; + relations.erase(relation); } } } @@ -232,16 +214,15 @@ std::vector> GetAccessibilityRelations(Dali: { if(auto controlDataImpl = GetControlImplementation(control)) { - auto& relations = controlDataImpl->mAccessibilityRelations; - - std::vector> result(relations.size()); + std::vector> result(static_cast(Accessibility::RelationType::MAX_COUNT)); // Map every Accessible* to its Address - for(std::size_t i = 0; i < relations.size(); ++i) + for(auto& relation : controlDataImpl->mAccessibilityRelations) { - auto& relation = relations[i]; + auto index = static_cast(relation.first); + auto& targets = relation.second; - std::transform(relation.begin(), relation.end(), std::back_inserter(result[i]), [](auto* x) { + std::transform(targets.begin(), targets.end(), std::back_inserter(result[index]), [](auto* x) { return x->GetAddress(); }); } @@ -256,10 +237,7 @@ void ClearAccessibilityRelations(Dali::Actor control) { if(auto controlDataImpl = GetControlImplementation(control)) { - for(auto& it : controlDataImpl->mAccessibilityRelations) - { - it.clear(); - } + controlDataImpl->mAccessibilityRelations.clear(); } } diff --git a/dali-toolkit/internal/controls/control/control-data-impl.cpp b/dali-toolkit/internal/controls/control/control-data-impl.cpp index d9a554e..4aecc29 100644 --- a/dali-toolkit/internal/controls/control/control-data-impl.cpp +++ b/dali-toolkit/internal/controls/control/control-data-impl.cpp @@ -515,13 +515,6 @@ Control::Impl::Impl(Control& controlImpl) mAccessibilityConstructor = [](Dali::Actor actor) -> std::unique_ptr { return std::unique_ptr(new DevelControl::AccessibleImpl(actor, Dali::Accessibility::Role::UNKNOWN)); }; - - size_t length = static_cast(Dali::Accessibility::RelationType::MAX_COUNT); - mAccessibilityRelations.reserve(length); - for(auto i = 0u; i < length; ++i) - { - mAccessibilityRelations.push_back({}); - } } Control::Impl::~Impl() diff --git a/dali-toolkit/internal/controls/control/control-data-impl.h b/dali-toolkit/internal/controls/control/control-data-impl.h index 5b2cee5..c81be41 100644 --- a/dali-toolkit/internal/controls/control/control-data-impl.h +++ b/dali-toolkit/internal/controls/control/control-data-impl.h @@ -35,7 +35,9 @@ #include #include #include +#include #include +#include namespace Dali { @@ -546,9 +548,9 @@ public: Dali::Accessibility::Role mAccessibilityRole = Dali::Accessibility::Role::UNKNOWN; - std::vector> mAccessibilityRelations; - std::function(Actor)> mAccessibilityConstructor; - std::unique_ptr mAccessibilityObject; + std::map> mAccessibilityRelations; + std::function(Actor)> mAccessibilityConstructor; + std::unique_ptr mAccessibilityObject; // Gesture Detection PinchGestureDetector mPinchGestureDetector; diff --git a/dali-toolkit/internal/controls/text-controls/text-anchor-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-anchor-impl.cpp index 2fde91c..37831ea 100644 --- a/dali-toolkit/internal/controls/text-controls/text-anchor-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-anchor-impl.cpp @@ -155,7 +155,10 @@ void TextAnchor::OnInitialize() } TextAnchor::TextAnchor() -: Control(ControlBehaviour(CONTROL_BEHAVIOUR_DEFAULT)) +: Control(ControlBehaviour(CONTROL_BEHAVIOUR_DEFAULT)), + mStartCharacterIndex(0), + mEndCharacterIndex(0), + mUri() { } diff --git a/dali-toolkit/internal/graphics/shaders/npatch-visual-3x3-shader.vert b/dali-toolkit/internal/graphics/shaders/npatch-visual-3x3-shader.vert index 1586312..c7b8a9f 100644 --- a/dali-toolkit/internal/graphics/shaders/npatch-visual-3x3-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/npatch-visual-3x3-shader.vert @@ -25,7 +25,10 @@ void main() mediump vec2 stretch = floor( aPosition * 0.5 ); mediump vec2 fixedTotal = uFixed[ 2 ]; - mediump vec4 gridPosition = vec4( fixedFactor + ( size - fixedTotal ) * stretch, 0.0, 1.0 ); + // Scale down if fixedTotal is bigger than visualSize + mediump float fixedScaleDownRate = min(1.0, min(size.x / fixedTotal.x, size.y / fixedTotal.y)); + + mediump vec4 gridPosition = vec4( fixedFactor * fixedScaleDownRate + ( size - fixedTotal * fixedScaleDownRate ) * stretch, 0.0, 1.0 ); mediump vec4 vertexPosition = gridPosition; vertexPosition.xy -= size * vec2( 0.5, 0.5 ); vertexPosition.xy += anchorPoint*size + (visualOffset + origin)*uSize.xy; diff --git a/dali-toolkit/internal/graphics/shaders/npatch-visual-shader.vert b/dali-toolkit/internal/graphics/shaders/npatch-visual-shader.vert index 07f645b..4cd84bc 100644 --- a/dali-toolkit/internal/graphics/shaders/npatch-visual-shader.vert +++ b/dali-toolkit/internal/graphics/shaders/npatch-visual-shader.vert @@ -25,7 +25,10 @@ void main() vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw ) + extraSize; vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy); - mediump vec4 gridPosition = vec4( fixedFactor + ( visualSize.xy - fixedTotal ) * stretch / stretchTotal, 0.0, 1.0 ); + // Scale down if fixedTotal is bigger than visualSize + mediump float fixedScaleDownRate = min(1.0, min(visualSize.x / fixedTotal.x, visualSize.y / fixedTotal.y)); + + mediump vec4 gridPosition = vec4( fixedFactor * fixedScaleDownRate + ( visualSize.xy - fixedTotal * fixedScaleDownRate ) * stretch / stretchTotal, 0.0, 1.0 ); mediump vec4 vertexPosition = gridPosition; vertexPosition.xy -= visualSize.xy * vec2( 0.5, 0.5 ); vertexPosition.xy += anchorPoint*visualSize + (visualOffset + origin)*uSize.xy; diff --git a/dali-toolkit/public-api/dali-toolkit-version.cpp b/dali-toolkit/public-api/dali-toolkit-version.cpp index 0f08266..12a4324 100644 --- a/dali-toolkit/public-api/dali-toolkit-version.cpp +++ b/dali-toolkit/public-api/dali-toolkit-version.cpp @@ -29,7 +29,7 @@ namespace Toolkit { const unsigned int TOOLKIT_MAJOR_VERSION = 2; const unsigned int TOOLKIT_MINOR_VERSION = 1; -const unsigned int TOOLKIT_MICRO_VERSION = 1; +const unsigned int TOOLKIT_MICRO_VERSION = 2; const char* const TOOLKIT_BUILD_DATE = __DATE__ " " __TIME__; #ifdef DEBUG_ENABLED diff --git a/packaging/dali-toolkit.spec b/packaging/dali-toolkit.spec index 0de4006..c007a73 100644 --- a/packaging/dali-toolkit.spec +++ b/packaging/dali-toolkit.spec @@ -1,6 +1,6 @@ Name: dali2-toolkit Summary: Dali 3D engine Toolkit -Version: 2.1.1 +Version: 2.1.2 Release: 1 Group: System/Libraries License: Apache-2.0 and BSD-3-Clause and MIT