blob: 083b35bd8847b9fb37f34f1625d75b72783d733c [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 "config.h"
#include "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