Lines Matching refs:param

456     int64_t CalculateRecursive(RecursiveParam param)
458 if (param.maxLines == 0 || param.remainingTextWidth <= 1.f) {
463 param.currentMax = maxWidth_ - parent_.detectIndents(param.lineNumber);
464 if (nearlyZero(param.currentMax)) {
469 while ((param.lineNumber > 0) && (lastBreakPos_ + 1 < breaks_.size()) &&
471 param.remainingTextWidth += (param.begin - breaks_[++lastBreakPos_].width);
472 param.begin = breaks_[lastBreakPos_].width;
478 param.breakPos = lastBreakPos_;
480 while (param.breakPos < breaks_.size() && breaks_[param.breakPos].width < (param.begin + param.currentMax)) {
481 param.breakPos++;
484 if (param.breakPos == lastBreakPos_ && param.remainingTextWidth > param.currentMax) {
487 breaks_.insert(breaks_.cbegin() + param.breakPos + 1, Break(param.begin + param.currentMax,
489 param.breakPos += BREAK_NUM_TWO;
493 static_cast<unsigned long>(param.lineNumber), param.begin, static_cast<unsigned long>(param.breakPos),
496 return FindOptimalSolutionForCurrentLine(param);
504 int64_t FindOptimalSolutionForCurrentLine(RecursiveParam& param)
515 SkScalar newWidth = param.currentMax;
517 if (param.breakPos > 0 && param.begin < breaks_[param.breakPos - 1].width) {
518 newWidth = std::min(breaks_[--param.breakPos].width - param.begin, param.currentMax);
521 if (looped && ((lastBreakPos_ == param.breakPos) ||
522 (newWidth/param.currentMax*UNDERFLOW_SCORE < MINIMUM_FILL_RATIO))) {
524 static_cast<unsigned long>(param.lineNumber), param.begin,
525 static_cast<unsigned long>(param.breakPos), newWidth, maxWidth_);
529 lastBreakPos_ = param.breakPos;
531 SkScalar currentWidth = std::min(newWidth, param.remainingTextWidth);
532 Index index { param.lineNumber, param.begin, currentWidth };
552 if (!HandleLastLine(param, overallScore, currentWidth, score)) {
557 if (param.targetLines < 0) {
558 overallScore += param.targetLines * PARAM_10000; // MINIMUM_FILL_RATIO;
568 !(param.lineNumber == 0 && bestLocalScore > param.targetLines * GOOD_ENOUGH_LINE_SCORE));
573 bool HandleLastLine(RecursiveParam& param, int64_t& overallScore, SkScalar& currentWidth, int64_t&score)
576 if (abs(currentWidth - param.remainingTextWidth) < 1.f) {
586 currentWidth = param.currentMax;
588 LOGD("last line %{public}lu reached", static_cast<unsigned long>(param.lineNumber));
591 if (((param.remainingTextWidth - currentWidth) / maxWidth_) < param.maxLines) {
594 param.targetLines - 1,
595 param.maxLines - param.lineNumber,
596 param.lineNumber + 1,
597 param.begin + currentWidth,
598 param.remainingTextWidth - currentWidth
600 lastBreakPos_ = param.breakPos; // restore our ix