override fun nextPageOffsetPx()

in printing/src/main/java/com/zachklipp/richtext/ui/printing/Paged.kt [277:310]


  override fun nextPageOffsetPx(currentPageOffsetPx: Int): Int? {
    if (breakpoints.isEmpty()) return null

    val pageBottom = currentPageOffsetPx + pageSizePx.height
    // TODO support hard breaks.
    var firstBreakpoint: PageBreakpoint? = null
    var lastBreakpoint: PageBreakpoint? = null

    for (i in 0 until breakpoints.size - 1) {
      val breakpoint = breakpoints[i]
      val nextBreakpoint = breakpoints[i + 1]
      if (firstBreakpoint == null && breakpoint.yPx >= currentPageOffsetPx) {
        firstBreakpoint = breakpoint
      }
      if (nextBreakpoint.yPx > pageBottom) {
        lastBreakpoint = breakpoint
        break
      }
    }

    if (firstBreakpoint == null) {
      // Offset is past the last breakpoint.
      return null
    }

    if (firstBreakpoint === lastBreakpoint) {
      // Current page doesn't have a single breakpoint in it, so the page will be clipped, and the
      // next page will start also clipped.
      return pageBottom
    }

    // List is not empty, so lastBreakpoint will never be null.
    return lastBreakpoint?.yPx
  }