#include <dali-toolkit/public-api/controls/control-impl.h>
#include <dali/devel-api/actors/actor-devel.h>
#include <dali/integration-api/adaptor-framework/adaptor.h>
+#include <dali/integration-api/constraint-integ.h>
#include <dali/public-api/math/math-utils.h>
#include <dali/public-api/object/type-registry-helper.h>
#include <dali/public-api/object/type-registry.h>
#include <dali-scene3d/internal/light/light-impl.h>
#include <dali-scene3d/internal/model-components/model-node-impl.h>
#include <dali-scene3d/internal/model-components/model-node-tree-utility.h>
+#include <dali-scene3d/public-api/common/scene3d-constraint-tag-ranges.h>
#include <dali-scene3d/public-api/controls/panel/panel.h>
#include <dali-scene3d/public-api/loader/light-parameters.h>
#include <dali-scene3d/public-api/loader/shader-manager.h>
static constexpr Vector3 Y_DIRECTION(1.0f, -1.0f, 1.0f);
-constexpr int32_t PANEL_ORDER_INDEX = 90; // It should be lower value than SceneView's first RenderTask's value.
+static constexpr int32_t PANEL_ORDER_INDEX = 90; // It should be lower value than SceneView's first RenderTask's value.
+
+static constexpr uint32_t PANEL_CONSTRAINT_TAG = Dali::Scene3D::ConstraintTagRanges::SCENE3D_CONSTRAINT_TAG_START + 300;
Dali::Geometry CreatePlaneGeometry(bool flip = false)
{
output = output * Y_DIRECTION; });
scaleConstraint.AddSource(Source{self, Dali::Actor::Property::SIZE});
scaleConstraint.AddSource(Source{mPanelNode, mResolutionPropertyIndex});
+ Dali::Integration::ConstraintSetInternalTag(scaleConstraint, PANEL_CONSTRAINT_TAG);
scaleConstraint.Apply();
UpdateProperties();
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 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.
#include <dali/devel-api/common/stage.h>
#include <dali/devel-api/rendering/frame-buffer-devel.h>
#include <dali/integration-api/adaptor-framework/adaptor.h>
+#include <dali/integration-api/constraint-integ.h>
#include <dali/integration-api/debug.h>
#include <dali/public-api/math/math-utils.h>
#include <dali/public-api/object/type-registry-helper.h>
#include <dali-scene3d/internal/controls/model/model-impl.h>
#include <dali-scene3d/internal/graphics/builtin-shader-extern-gen.h>
#include <dali-scene3d/internal/light/light-impl.h>
+#include <dali-scene3d/public-api/common/scene3d-constraint-tag-ranges.h>
using namespace Dali;
static constexpr int32_t SCENE_ORDER_INDEX = 100;
static constexpr int32_t SHADOW_ORDER_INDEX = 99;
+static constexpr uint32_t SCENE_VIEW_CONSTRAINT_TAG = Dali::Scene3D::ConstraintTagRanges::SCENE3D_CONSTRAINT_TAG_START + 200;
+
static constexpr std::string_view SKYBOX_INTENSITY_STRING = "uIntensity";
static constexpr std::string_view Y_FLIP_MASK_TEXTURE = "uYFlipMaskTexture";
static constexpr float FLIP_MASK_TEXTURE = 1.0f;
projectionMatrixConstraint.AddSource(Source{selectedCamera, Dali::CameraActor::Property::FAR_PLANE_DISTANCE});
projectionMatrixConstraint.AddSource(Source{selectedCamera, Dali::CameraActor::Property::ASPECT_RATIO});
projectionMatrixConstraint.AddSource(Source{shadowLightCamera, Dali::Actor::Property::WORLD_MATRIX});
+ Dali::Integration::ConstraintSetInternalTag(projectionMatrixConstraint, SCENE_VIEW_CONSTRAINT_TAG);
projectionMatrixConstraint.ApplyPost();
}
// EXTERNAL INCLUDES
#include <dali-toolkit/devel-api/controls/control-devel.h>
+#include <dali/integration-api/constraint-integ.h>
#include <dali/integration-api/debug.h>
#include <dali/public-api/object/type-registry-helper.h>
#include <dali/public-api/object/type-registry.h>
#include <dali-scene3d/internal/controls/model/model-impl.h>
#include <dali-scene3d/internal/light/light-impl.h>
#include <dali-scene3d/internal/model-components/model-primitive-impl.h>
+#include <dali-scene3d/public-api/common/scene3d-constraint-tag-ranges.h>
namespace Dali
{
// Setup properties, signals and actions using the type-registry.
DALI_TYPE_REGISTRATION_BEGIN(Scene3D::ModelNode, Dali::CustomActor, Create);
DALI_TYPE_REGISTRATION_END()
+
+static constexpr uint32_t BONE_MATRIX_CONSTRAINT_TAG = Dali::Scene3D::ConstraintTagRanges::SCENE3D_CONSTRAINT_TAG_START + 110;
} // unnamed namespace
Dali::Scene3D::ModelNode ModelNode::New()
Actor joint = Self();
boneData.constraint.AddSource(Source{joint, Actor::Property::WORLD_MATRIX});
+ Dali::Integration::ConstraintSetInternalTag(boneData.constraint, BONE_MATRIX_CONSTRAINT_TAG);
boneData.constraint.ApplyPost();
break;
}
--- /dev/null
+#ifndef DALI_SCENE3D_SCENE_CONSTRAINT_TAG_RANGES_H
+#define DALI_SCENE3D_SCENE_CONSTRAINT_TAG_RANGES_H
+
+/*
+ * Copyright (c) 2025 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali/public-api/animation/constraint-tag-ranges.h>
+
+namespace Dali::Scene3D
+{
+/**
+ * @brief Enumeration for the start and end property ranges.
+ * @SINCE_2_4.13
+ */
+enum ConstraintTagRanges
+{
+ SCENE3D_CONSTRAINT_TAG_START = Dali::ConstraintTagRanges::CORE_CONSTRAINT_TAG_MAX + 1u + (Dali::ConstraintTagRanges::INTERNAL_TAG_MAX_COUNT_PER_DERIVATION)*2,
+ SCENE3D_CONSTRAINT_TAG_END = SCENE3D_CONSTRAINT_TAG_START + Dali::ConstraintTagRanges::INTERNAL_TAG_MAX_COUNT_PER_DERIVATION,
+};
+} // namespace Dali::Scene3D
+
+#endif // DALI_SCENE3D_SCENE_CONSTRAINT_TAG_RANGES_H
/*
- * Copyright (c) 2024 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 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.
// EXTERNAL INCLUDES
#include <dali/devel-api/common/map-wrapper.h>
+#include <dali/integration-api/constraint-integ.h>
#include <dali/public-api/animation/constraint.h>
#include <cstring>
// INTERNAL INCLUDES
#include <dali-scene3d/internal/light/light-impl.h>
#include <dali-scene3d/internal/loader/hash.h>
+#include <dali-scene3d/public-api/common/scene3d-constraint-tag-ranges.h>
#include <dali-scene3d/public-api/loader/blend-shape-details.h>
#include <dali-scene3d/public-api/loader/node-definition.h>
{
namespace
{
-static constexpr uint32_t INDEX_FOR_LIGHT_CONSTRAINT_TAG = 10;
-static constexpr uint32_t INDEX_FOR_SHADOW_CONSTRAINT_TAG = 100;
+static constexpr uint32_t INDEX_FOR_LIGHT_CONSTRAINT_TAG = Dali::Scene3D::ConstraintTagRanges::SCENE3D_CONSTRAINT_TAG_START + 10;
+static constexpr uint32_t INDEX_FOR_SHADOW_CONSTRAINT_TAG = Dali::Scene3D::ConstraintTagRanges::SCENE3D_CONSTRAINT_TAG_START + 100;
constexpr uint32_t MINIMUM_SHADER_VERSION_SUPPORT_TEXTURE_TEXEL_AND_SIZE = 300;
{
std::string shadowEnabledPropertyName(Scene3D::Internal::Light::GetShadowEnabledUniformName());
shader.RegisterProperty(shadowEnabledPropertyName, static_cast<int32_t>(false));
- shader.RemoveConstraints(INDEX_FOR_SHADOW_CONSTRAINT_TAG);
+ Dali::Integration::HandleRemoveConstraints(shader, INDEX_FOR_SHADOW_CONSTRAINT_TAG);
}
mImpl->mShadowLight.Reset();
}
auto lightDirectionPropertyIndex = shader.RegisterProperty(lightDirectionPropertyName, Vector3::ZAXIS);
Dali::Constraint lightDirectionConstraint = Dali::Constraint::New<Vector3>(shader, lightDirectionPropertyIndex, [](Vector3& output, const PropertyInputContainer& inputs) { output = inputs[0]->GetQuaternion().Rotate(Vector3::ZAXIS); });
lightDirectionConstraint.AddSource(Source{mImpl->mLights[lightIndex], Dali::Actor::Property::WORLD_ORIENTATION});
+ Dali::Integration::ConstraintSetInternalTag(lightDirectionConstraint, INDEX_FOR_LIGHT_CONSTRAINT_TAG + lightIndex);
lightDirectionConstraint.ApplyPost();
- lightDirectionConstraint.SetTag(INDEX_FOR_LIGHT_CONSTRAINT_TAG + lightIndex);
std::string lightColorPropertyName(Scene3D::Internal::Light::GetLightColorUniformName());
lightColorPropertyName += "[" + std::to_string(lightIndex) + "]";
auto lightColorPropertyIndex = shader.RegisterProperty(lightColorPropertyName, Vector3(Color::WHITE));
Dali::Constraint lightColorConstraint = Dali::Constraint::New<Vector3>(shader, lightColorPropertyIndex, [](Vector3& output, const PropertyInputContainer& inputs) { output = Vector3(inputs[0]->GetVector4()); });
lightColorConstraint.AddSource(Source{mImpl->mLights[lightIndex], Dali::Actor::Property::COLOR});
+ Dali::Integration::ConstraintSetInternalTag(lightColorConstraint, INDEX_FOR_LIGHT_CONSTRAINT_TAG + lightIndex);
lightColorConstraint.ApplyPost();
- lightColorConstraint.SetTag(INDEX_FOR_LIGHT_CONSTRAINT_TAG + lightIndex);
}
void ShaderManager::RemoveLightConstraint(uint32_t lightIndex)
{
for(auto&& shader : mImpl->mShaders)
{
- shader.RemoveConstraints(INDEX_FOR_LIGHT_CONSTRAINT_TAG + lightIndex);
+ Dali::Integration::HandleRemoveConstraints(shader, INDEX_FOR_LIGHT_CONSTRAINT_TAG + lightIndex);
}
}
}
Dali::Constraint shadowViewProjectionConstraint = Dali::Constraint::New<Matrix>(shader, shadowViewProjectionPropertyIndex, [](Matrix& output, const PropertyInputContainer& inputs) { output = inputs[0]->GetMatrix(); });
shadowViewProjectionConstraint.AddSource(Source{shadowLightCamera, tempViewProjectionMatrixIndex});
+ Dali::Integration::ConstraintSetInternalTag(shadowViewProjectionConstraint, INDEX_FOR_SHADOW_CONSTRAINT_TAG);
shadowViewProjectionConstraint.ApplyPost();
- shadowViewProjectionConstraint.SetTag(INDEX_FOR_SHADOW_CONSTRAINT_TAG);
}
} // namespace Dali::Scene3D::Loader
#include <dali/devel-api/actors/actor-devel.h>
#include <dali/devel-api/common/stage.h>
#include <dali/devel-api/object/property-helper-devel.h>
+#include <dali/integration-api/constraint-integ.h>
#include <dali/public-api/actors/layer.h>
#include <dali/public-api/animation/constraint.h>
#include <dali/public-api/animation/constraints.h>
#include <dali-toolkit/public-api/controls/scrollable/item-view/default-item-layout-property.h>
#include <dali-toolkit/public-api/controls/scrollable/item-view/default-item-layout.h>
#include <dali-toolkit/public-api/controls/scrollable/item-view/item-factory.h>
+#include <dali-toolkit/public-api/toolkit-constraint-tag-ranges.h>
using std::string;
using namespace Dali;
const Vector4 OVERSHOOT_OVERLAY_NINE_PATCH_BORDER(0.0f, 0.0f, 1.0f, 12.0f);
const float DEFAULT_KEYBOARD_FOCUS_SCROLL_DURATION = 0.2f;
-const unsigned int OVERSHOOT_SIZE_CONSTRAINT_TAG(42);
+static constexpr uint32_t ITEM_VIEW_CONSTRAINT_TAG(Dali::Toolkit::ConstraintTagRanges::TOOLKIT_CONSTRAINT_TAG_START + 41);
+static constexpr uint32_t OVERSHOOT_SIZE_CONSTRAINT_TAG(Dali::Toolkit::ConstraintTagRanges::TOOLKIT_CONSTRAINT_TAG_START + 42);
/**
* Local helper to convert pan distance (in actor coordinates) to the layout-specific scrolling direction
constraint.AddSource(ParentSource(Dali::Toolkit::ItemView::Property::SCROLL_DIRECTION));
constraint.AddSource(ParentSource(Dali::Toolkit::ItemView::Property::LAYOUT_ORIENTATION));
constraint.AddSource(ParentSource(Dali::Actor::Property::SIZE));
- constraint.SetTag(OVERSHOOT_SIZE_CONSTRAINT_TAG);
+ Dali::Integration::ConstraintSetInternalTag(constraint, OVERSHOOT_SIZE_CONSTRAINT_TAG);
constraint.Apply();
}
if(mOvershootOverlay)
{
// Remove old & add new size constraint
- mOvershootOverlay.RemoveConstraints(OVERSHOOT_SIZE_CONSTRAINT_TAG);
+ Dali::Integration::HandleRemoveConstraints(mOvershootOverlay, OVERSHOOT_SIZE_CONSTRAINT_TAG);
+
ApplyOvershootSizeConstraint(mOvershootOverlay, mOvershootSize.height);
}
}
constraint.AddSource(ParentSource(Toolkit::ItemView::Property::SCROLL_DIRECTION));
constraint.AddSource(ParentSource(Toolkit::ItemView::Property::LAYOUT_ORIENTATION));
constraint.AddSource(ParentSource(Toolkit::ItemView::Property::OVERSHOOT));
+ Dali::Integration::ConstraintSetInternalTag(constraint, ITEM_VIEW_CONSTRAINT_TAG);
constraint.Apply();
constraint = Constraint::New<Vector3>(mOvershootOverlay, Actor::Property::POSITION, OvershootOverlayPositionConstraint);
constraint.AddSource(ParentSource(Toolkit::ItemView::Property::SCROLL_DIRECTION));
constraint.AddSource(ParentSource(Toolkit::ItemView::Property::LAYOUT_ORIENTATION));
constraint.AddSource(ParentSource(Toolkit::ItemView::Property::OVERSHOOT));
+ Dali::Integration::ConstraintSetInternalTag(constraint, ITEM_VIEW_CONSTRAINT_TAG);
constraint.Apply();
constraint = Constraint::New<bool>(mOvershootOverlay, Actor::Property::VISIBLE, OvershootOverlayVisibilityConstraint);
constraint.AddSource(ParentSource(Toolkit::Scrollable::Property::CAN_SCROLL_VERTICAL));
+ Dali::Integration::ConstraintSetInternalTag(constraint, ITEM_VIEW_CONSTRAINT_TAG);
constraint.Apply();
constraint = Constraint::New<float>(mOvershootOverlay, effectOvershootPropertyIndex, EqualToConstraint());
constraint.AddSource(ParentSource(Toolkit::ItemView::Property::OVERSHOOT));
+ Dali::Integration::ConstraintSetInternalTag(constraint, ITEM_VIEW_CONSTRAINT_TAG);
constraint.Apply();
}
}
/*
- * Copyright (c) 2021 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2025 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.
// CLASS HEADER
#include <dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl-constraints.h>
+// EXTERNAL INCLUDES
+#include <dali/integration-api/constraint-integ.h>
+
// INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view-constraints.h>
#include <dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h>
+#include <dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view-constraints.h>
+#include <dali-toolkit/public-api/toolkit-constraint-tag-ranges.h>
namespace Dali
{
{
namespace
{
+static constexpr uint32_t SCROLL_VIEW_CONSTRAINT_TAG(Dali::Toolkit::ConstraintTagRanges::TOOLKIT_CONSTRAINT_TAG_START + 40);
float FinalDefaultAlphaFunction(float offset)
{
mScrollMainInternalPrePositionConstraint.AddSource(Source(detector, PanGestureDetector::Property::LOCAL_POSITION));
mScrollMainInternalPrePositionConstraint.AddSource(Source(detector, PanGestureDetector::Property::PANNING));
mScrollMainInternalPrePositionConstraint.AddSource(Source(scrollViewActor, Actor::Property::SIZE));
+ Dali::Integration::ConstraintSetInternalTag(mScrollMainInternalPrePositionConstraint, SCROLL_VIEW_CONSTRAINT_TAG);
mScrollMainInternalPrePositionConstraint.Apply();
}
mScrollMainInternalPositionConstraint.AddSource(LocalSource(Toolkit::Scrollable::Property::SCROLL_POSITION_MIN));
mScrollMainInternalPositionConstraint.AddSource(LocalSource(Toolkit::Scrollable::Property::SCROLL_POSITION_MAX));
mScrollMainInternalPositionConstraint.AddSource(Source(scrollViewActor, Actor::Property::SIZE));
+ Dali::Integration::ConstraintSetInternalTag(mScrollMainInternalPositionConstraint, SCROLL_VIEW_CONSTRAINT_TAG);
mScrollMainInternalPositionConstraint.Apply();
mScrollMainInternalDeltaConstraint = Constraint::New<Vector2>(scrollViewActor, Toolkit::ScrollView::Property::SCROLL_POSITION_DELTA, InternalPositionDeltaConstraint);
mScrollMainInternalDeltaConstraint.AddSource(LocalSource(Toolkit::ScrollView::Property::SCROLL_POSITION));
mScrollMainInternalDeltaConstraint.AddSource(LocalSource(Toolkit::ScrollView::Property::SCROLL_DOMAIN_OFFSET));
+ Dali::Integration::ConstraintSetInternalTag(mScrollMainInternalDeltaConstraint, SCROLL_VIEW_CONSTRAINT_TAG);
mScrollMainInternalDeltaConstraint.Apply();
mScrollMainInternalFinalConstraint = Constraint::New<Vector2>(scrollViewActor, Toolkit::ScrollView::Property::SCROLL_FINAL, InternalFinalConstraint(FinalDefaultAlphaFunction, FinalDefaultAlphaFunction));
mScrollMainInternalFinalConstraint.AddSource(LocalSource(Toolkit::ScrollView::Property::SCROLL_POSITION));
mScrollMainInternalFinalConstraint.AddSource(LocalSource(Toolkit::ScrollView::Property::OVERSHOOT_X));
mScrollMainInternalFinalConstraint.AddSource(LocalSource(Toolkit::ScrollView::Property::OVERSHOOT_Y));
+ Dali::Integration::ConstraintSetInternalTag(mScrollMainInternalFinalConstraint, SCROLL_VIEW_CONSTRAINT_TAG);
mScrollMainInternalFinalConstraint.Apply();
mScrollMainInternalRelativeConstraint = Constraint::New<Vector2>(scrollViewActor, Toolkit::Scrollable::Property::SCROLL_RELATIVE_POSITION, InternalRelativePositionConstraint);
mScrollMainInternalRelativeConstraint.AddSource(LocalSource(Toolkit::Scrollable::Property::SCROLL_POSITION_MIN));
mScrollMainInternalRelativeConstraint.AddSource(LocalSource(Toolkit::Scrollable::Property::SCROLL_POSITION_MAX));
mScrollMainInternalRelativeConstraint.AddSource(LocalSource(Actor::Property::SIZE));
+ Dali::Integration::ConstraintSetInternalTag(mScrollMainInternalRelativeConstraint, SCROLL_VIEW_CONSTRAINT_TAG);
mScrollMainInternalRelativeConstraint.Apply();
mScrollMainInternalDomainConstraint = Constraint::New<Vector2>(scrollViewActor, Toolkit::ScrollView::Property::SCROLL_DOMAIN_SIZE, InternalScrollDomainConstraint);
mScrollMainInternalDomainConstraint.AddSource(LocalSource(Toolkit::Scrollable::Property::SCROLL_POSITION_MIN));
mScrollMainInternalDomainConstraint.AddSource(LocalSource(Toolkit::Scrollable::Property::SCROLL_POSITION_MAX));
mScrollMainInternalDomainConstraint.AddSource(LocalSource(Actor::Property::SIZE));
+ Dali::Integration::ConstraintSetInternalTag(mScrollMainInternalDomainConstraint, SCROLL_VIEW_CONSTRAINT_TAG);
mScrollMainInternalDomainConstraint.Apply();
mScrollMainInternalPrePositionMaxConstraint = Constraint::New<Vector2>(scrollViewActor, Toolkit::ScrollView::Property::SCROLL_PRE_POSITION_MAX, InternalPrePositionMaxConstraint);
mScrollMainInternalPrePositionMaxConstraint.AddSource(LocalSource(Toolkit::Scrollable::Property::SCROLL_POSITION_MAX));
mScrollMainInternalPrePositionMaxConstraint.AddSource(LocalSource(Actor::Property::SIZE));
+ Dali::Integration::ConstraintSetInternalTag(mScrollMainInternalPrePositionMaxConstraint, SCROLL_VIEW_CONSTRAINT_TAG);
mScrollMainInternalPrePositionMaxConstraint.Apply();
// When panning we want to make sure overshoot values are affected by pre position and post position
mScrollMainInternalOvershootXConstraint.AddSource(LocalSource(Toolkit::ScrollView::Property::SCROLL_PRE_POSITION));
mScrollMainInternalOvershootXConstraint.AddSource(LocalSource(Toolkit::ScrollView::Property::SCROLL_POSITION));
mScrollMainInternalOvershootXConstraint.AddSource(LocalSource(Toolkit::Scrollable::Property::CAN_SCROLL_HORIZONTAL));
+ Dali::Integration::ConstraintSetInternalTag(mScrollMainInternalOvershootXConstraint, SCROLL_VIEW_CONSTRAINT_TAG);
mScrollMainInternalOvershootXConstraint.Apply();
mScrollMainInternalOvershootYConstraint = Constraint::New<float>(scrollViewActor, Toolkit::ScrollView::Property::OVERSHOOT_Y, OvershootYConstraint(scrollView.mMaxOvershoot.y));
mScrollMainInternalOvershootYConstraint.AddSource(LocalSource(Toolkit::ScrollView::Property::SCROLL_PRE_POSITION));
mScrollMainInternalOvershootYConstraint.AddSource(LocalSource(Toolkit::ScrollView::Property::SCROLL_POSITION));
mScrollMainInternalOvershootYConstraint.AddSource(LocalSource(Toolkit::Scrollable::Property::CAN_SCROLL_VERTICAL));
+ Dali::Integration::ConstraintSetInternalTag(mScrollMainInternalOvershootYConstraint, SCROLL_VIEW_CONSTRAINT_TAG);
mScrollMainInternalOvershootYConstraint.Apply();
}
else
constraint = Constraint::New<Vector3>(scrollViewActor, Actor::Property::POSITION, MoveActorConstraint);
constraint.AddSource(Source(scrollViewActor, Toolkit::ScrollView::Property::SCROLL_POSITION));
constraint.SetRemoveAction(Constraint::DISCARD);
+ Dali::Integration::ConstraintSetInternalTag(constraint, SCROLL_VIEW_CONSTRAINT_TAG);
scrollView.ApplyConstraintToBoundActors(constraint);
// WrapActor (wrap functionality)
constraint.AddSource(Source(scrollViewActor, Toolkit::Scrollable::Property::SCROLL_POSITION_MAX));
constraint.AddSource(Source(scrollViewActor, Toolkit::ScrollView::Property::WRAP));
constraint.SetRemoveAction(Constraint::DISCARD);
+ Dali::Integration::ConstraintSetInternalTag(constraint, SCROLL_VIEW_CONSTRAINT_TAG);
scrollView.ApplyConstraintToBoundActors(constraint);
}
-
} // namespace Internal
} // namespace Toolkit
${public_api_src_dir}/dali-toolkit-common.h
${public_api_src_dir}/enums.h
${public_api_src_dir}/align-enumerations.h
+ ${public_api_src_dir}/toolkit-constraint-tag-ranges.h
${public_api_src_dir}/toolkit-property-index-ranges.h
)
--- /dev/null
+#ifndef DALI_DEVEL_TOOLKIT_PROPERTY_INDEX_RANGES_H
+#define DALI_DEVEL_TOOLKIT_PROPERTY_INDEX_RANGES_H
+
+/*
+ * Copyright (c) 2025 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// EXTERNAL INCLUDES
+#include <dali/public-api/animation/constraint-tag-ranges.h>
+
+namespace Dali::Toolkit
+{
+/**
+ * @brief Enumeration for the start and end property ranges.
+ * @SINCE_2_4.13
+ */
+enum ConstraintTagRanges
+{
+ TOOLKIT_CONSTRAINT_TAG_START = Dali::ConstraintTagRanges::CORE_CONSTRAINT_TAG_MAX + 1u + Dali::ConstraintTagRanges::INTERNAL_TAG_MAX_COUNT_PER_DERIVATION,
+ TOOLKIT_CONSTRAINT_TAG_END = TOOLKIT_CONSTRAINT_TAG_START + Dali::ConstraintTagRanges::INTERNAL_TAG_MAX_COUNT_PER_DERIVATION,
+};
+
+} // namespace Dali::Toolkit
+
+#endif // DALI_DEVEL_TOOLKIT_PROPERTY_INDEX_RANGES_H