Chromium Code Reviews| Index: third_party/WebKit/Source/core/editing/VisibleUnits.cpp |
| diff --git a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp |
| index f1da75b0e408206c7b87a6ce891b67ed7c7005fc..b142b5b2d75f74f70cfa9ed972dfd33a5d8e42b8 100644 |
| --- a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp |
| +++ b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp |
| @@ -4048,4 +4048,37 @@ PositionInFlatTree skipWhitespace(const PositionInFlatTree& position) { |
| return skipWhitespaceAlgorithm(position); |
| } |
| +template <typename Strategy> |
| +static void textQuadAlgorithm(Vector<FloatQuad>& quads, |
|
Xiaocheng
2017/03/31 18:01:18
Same here, use |Vector<FloatQuad>*|
tanvir
2017/04/03 13:00:48
Done.
|
| + const EphemeralRangeTemplate<Strategy>& range) { |
| + const PositionTemplate<Strategy> startPosition = range.startPosition(); |
| + const PositionTemplate<Strategy> endPosition = range.endPosition(); |
| + Node* startContainer = startPosition.computeContainerNode(); |
| + DCHECK(startContainer); |
| + Node* endContainer = endPosition.computeContainerNode(); |
| + DCHECK(endContainer); |
| + |
| + for (Node& node : range.nodes()) { |
| + LayoutObject* layoutObject = node.layoutObject(); |
| + if (!layoutObject || !layoutObject->isText()) |
| + continue; |
| + LayoutText* layoutText = toLayoutText(layoutObject); |
| + unsigned startOffset = |
| + node == startContainer ? startPosition.offsetInContainerNode() : 0; |
| + unsigned endOffset = node == endContainer |
| + ? endPosition.offsetInContainerNode() |
| + : std::numeric_limits<unsigned>::max(); |
| + layoutText->absoluteQuadsForRange(quads, startOffset, endOffset); |
| + } |
| +} |
| + |
| +void textQuads(Vector<FloatQuad>& quads, const EphemeralRange& range) { |
| + textQuadAlgorithm(quads, range); |
| +} |
| + |
| +void textQuads(Vector<FloatQuad>& quads, |
| + const EphemeralRangeInFlatTree& range) { |
| + textQuadAlgorithm(quads, range); |
| +} |
| + |
| } // namespace blink |