1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "config.h" 6#include "core/editing/CompositionUnderlineRangeFilter.h" 7 8namespace blink { 9 10CompositionUnderlineRangeFilter::CompositionUnderlineRangeFilter(const Vector<CompositionUnderline>& underlines, size_t indexLo, size_t indexHi) 11 : m_underlines(underlines) 12 , m_indexLo(indexLo) 13 , m_indexHi(indexHi) 14 , m_theEnd(this, kNotFound) { } 15 16size_t CompositionUnderlineRangeFilter::seekValidIndex(size_t index) 17{ 18 if (index == kNotFound) 19 return kNotFound; 20 21 size_t numUnderlines = m_underlines.size(); 22 while (index < numUnderlines) { 23 const CompositionUnderline& underline = m_underlines[index]; 24 25 if (underline.endOffset <= m_indexLo) { 26 // |underline| lies before the query range: keep on looking. 27 ++index; 28 } else if (underline.startOffset <= m_indexHi) { 29 // |underline| intersects with the query range: valid, so return. 30 return index; 31 } else { 32 // |underline| is completely after the query range: bail. 33 break; 34 } 35 } 36 return kNotFound; 37} 38 39} // namespace blink 40