blob: 8c724b33a0e54d324405d13b9b830ec76de437c3 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "sky/engine/core/editing/CompositionUnderlineRangeFilter.h"
namespace blink {
CompositionUnderlineRangeFilter::CompositionUnderlineRangeFilter(const Vector<CompositionUnderline>& underlines, size_t indexLo, size_t indexHi)
: m_underlines(underlines)
, m_indexLo(indexLo)
, m_indexHi(indexHi)
, m_theEnd(this, kNotFound) { }
size_t CompositionUnderlineRangeFilter::seekValidIndex(size_t index)
{
if (index == kNotFound)
return kNotFound;
size_t numUnderlines = m_underlines.size();
while (index < numUnderlines) {
const CompositionUnderline& underline = m_underlines[index];
if (underline.endOffset <= m_indexLo) {
// |underline| lies before the query range: keep on looking.
++index;
} else if (underline.startOffset <= m_indexHi) {
// |underline| intersects with the query range: valid, so return.
return index;
} else {
// |underline| is completely after the query range: bail.
break;
}
}
return kNotFound;
}
} // namespace blink