Lines Matching defs:resolver
138 void RenderBlock::appendRunsForObject(int start, int end, RenderObject* obj, InlineBidiResolver& resolver)
144 LineMidpointState& lineMidpointState = resolver.midpointState();
158 return appendRunsForObject(start, end, obj, resolver);
161 resolver.addRun(new (obj->renderArena()) BidiRun(start, end, obj, resolver.context(), resolver.dir()));
172 resolver.addRun(new (obj->renderArena())
173 BidiRun(start, nextMidpoint.pos + 1, obj, resolver.context(), resolver.dir()));
174 return appendRunsForObject(nextMidpoint.pos + 1, end, obj, resolver);
177 resolver.addRun(new (obj->renderArena()) BidiRun(start, end, obj, resolver.context(), resolver.dir()));
517 void RenderBlock::bidiReorderLine(InlineBidiResolver& resolver, const InlineIterator& end, bool previousLineBrokeCleanly)
519 resolver.createBidiRunsForLine(end, style()->visuallyOrdered(), previousLineBrokeCleanly);
698 InlineBidiResolver resolver;
702 RootInlineBox* startLine = determineStartPosition(firstLine, fullLayout, previousLineBrokeCleanly, resolver, floats, floatIndex);
719 LineMidpointState& lineMidpointState = resolver.midpointState();
744 InlineIterator end = resolver.position();
771 if (checkForEndLineMatch && (endLineMatched = matchedEndLine(resolver, cleanLineStart, cleanLineBidiStatus, endLine, endLineYPos, repaintBottom, repaintTop)))
779 end = findNextLineBreak(resolver, firstLine, isLineEmpty, previousLineBrokeCleanly, &clear);
780 if (resolver.position().atEnd()) {
781 resolver.deleteRuns();
785 ASSERT(end != resolver.position());
788 bidiReorderLine(resolver, end, previousLineBrokeCleanly);
789 ASSERT(resolver.position() == end);
792 if (!previousLineBrokeCleanly && resolver.runCount() && resolver.logicallyLastRun()->m_object->style()->breakOnlyAfterWhiteSpace()
793 && resolver.logicallyLastRun()->m_object->style()->autoWrap()) {
794 trailingSpaceRun = resolver.logicallyLastRun();
810 bool shouldReorder = trailingSpaceRun != (direction == LTR ? resolver.lastRun() : resolver.firstRun());
812 BidiContext* baseContext = resolver.context();
819 resolver.addRun(newTrailingRun);
821 resolver.prependRun(newTrailingRun);
827 resolver.moveRunToEnd(trailingSpaceRun);
830 resolver.moveRunToBeginning(trailingSpaceRun);
844 if (resolver.runCount()) {
845 lineBox = constructLine(resolver.runCount(), resolver.firstRun(), resolver.lastRun(), firstLine, !end.obj, end.obj && !end.pos ? end.obj : 0);
850 computeHorizontalPositionsForLine(lineBox, firstLine, resolver.firstRun(), trailingSpaceRun, end.atEnd());
853 computeVerticalPositionsForLine(lineBox, resolver.firstRun());
868 resolver.deleteRuns();
871 lineBox->setLineBreakInfo(end.obj, end.pos, resolver.status());
903 resolver.setPosition(end);
993 InlineBidiResolver& resolver, Vector<FloatWithRect>& floats, unsigned& numCleanFloats)
1095 resolver.setStatus(last->lineBreakBidiStatus());
1104 resolver.setLastStrongDir(direction);
1105 resolver.setLastDir(direction);
1106 resolver.setEorDir(direction);
1107 resolver.setContext(BidiContext::create(ltr ? 0 : 1, direction, style()->unicodeBidi() == Override));
1109 startObj = bidiFirst(this, &resolver);
1112 resolver.setPosition(InlineIterator(this, startObj, pos));
1146 bool RenderBlock::matchedEndLine(const InlineBidiResolver& resolver, const InlineIterator& endLineStart, const BidiStatus& endLineStatus, RootInlineBox*& endLine, int& endYPos, int& repaintBottom, int& repaintTop)
1148 if (resolver.position() == endLineStart) {
1149 if (resolver.status() != endLineStatus)
1178 if (line->lineBreakObj() == resolver.position().obj && line->lineBreakPos() == resolver.position().pos) {
1180 if (line->lineBreakBidiStatus() != resolver.status())
1329 int RenderBlock::skipLeadingWhitespace(InlineBidiResolver& resolver, bool firstLine, bool isLineEmpty, bool previousLineBrokeCleanly)
1332 while (!resolver.position().atEnd() && !requiresLineBox(resolver.position(), isLineEmpty, previousLineBrokeCleanly)) {
1333 RenderObject* object = resolver.position().obj;
1361 resolver.increment();
1363 resolver.commitExplicitEmbedding();
1415 InlineIterator RenderBlock::findNextLineBreak(InlineBidiResolver& resolver, bool firstLine, bool& isLineEmpty, bool& previousLineBrokeCleanly,
1418 ASSERT(resolver.position().block == this);
1420 bool appliedStartWidth = resolver.position().pos > 0;
1421 LineMidpointState& lineMidpointState = resolver.midpointState();
1423 int width = skipLeadingWhitespace(resolver, firstLine, isLineEmpty, previousLineBrokeCleanly);
1428 if (resolver.position().atEnd())
1429 return resolver.position();
1443 InlineIterator lBreak = resolver.position();
1445 RenderObject *o = resolver.position().obj;
1447 unsigned pos = resolver.position().pos;
1448 int nextBreakable = resolver.position().nextBreakablePosition;
1570 } else if (style()->collapseWhiteSpace() && resolver.position().obj == o
1964 if (lBreak == resolver.position() && (!lBreak.obj || !lBreak.obj->isBR())) {
1987 if (lBreak == resolver.position())