/*
- * 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.
for(MarkList::SizeType i = 0; i < mMarks.Count(); ++i)
{
const Property::Value& propertyValue = mMarks[i];
- if(propertyValue.Get(mark))
- {
- mark = MapValuePercentage(mark);
+ DALI_ASSERT_ALWAYS(propertyValue.Get(mark) && "Marker Property cannot get float!");
- float dist = fabsf(mark - value);
- if(dist < closestDist)
- {
- closestDist = dist;
- closestMark = mark;
- }
+ mark = MapValuePercentage(mark);
+
+ float dist = fabsf(mark - value);
+ if(dist < closestDist)
+ {
+ closestDist = dist;
+ closestMark = mark;
}
}
const float MARK_TOLERANCE = GetMarkTolerance();
// Binary search
- int head = 0,
- tail = mMarks.Size() - 1;
- int current;
- float mark;
+ MarkList::SizeType head = 0u;
+ MarkList::SizeType tail = mMarks.Size();
+ MarkList::SizeType current;
+ float mark;
- while(head <= tail)
+ // For each range [head tail) (right-opened)
+ while(head < tail)
{
- current = head + (tail - head) / 2;
+ current = head + ((tail - head) >> 1);
const Property::Value& propertyValue = mMarks[current];
- if(propertyValue.Get(mark))
- {
- mark = MapValuePercentage(mark);
+ DALI_ASSERT_ALWAYS(propertyValue.Get(mark) && "Marker Property cannot get float!");
- if(fabsf(mark - value) < MARK_TOLERANCE)
- {
- outIndex = current;
- return true;
- }
+ mark = MapValuePercentage(mark);
- if(value < mark)
- {
- tail = current - 1;
- }
- else
- {
- head = current + 1;
- }
+ if(fabsf(mark - value) < MARK_TOLERANCE)
+ {
+ outIndex = static_cast<int>(static_cast<unsigned int>(current)); ///< Safety convertion from size type to integer.
+ return true;
+ }
+
+ if(value < mark)
+ {
+ tail = current;
+ }
+ else
+ {
+ head = current + 1;
}
}
bool Slider::SliderAccessible::SetCurrent(double current)
{
if(current < GetMinimum() || current > GetMaximum())
+ {
return false;
+ }
auto self = Toolkit::Slider::DownCast(Self());
auto& impl = Toolkit::GetImpl(self);