@Override public void onDraw(Canvas canvas, int startTop, int startBottom) { int tokenStart = getTokenForVertical(startTop, TokenPosition.START_OF_LINE); int tokenEnd = getTokenForVertical(startBottom, TokenPosition.END_OF_LINE); for (int i = Math.max(0, tokenStart - 25); i < tokenEnd + 25 && i < tokens.length; i++) { Token token = tokens[i]; token.draw(canvas, -startTop, paint, params); if (params.debugging) { if (token instanceof LineBreak) { int lastColor = paint.getColor(); boolean lastFakeBold = paint.isFakeBoldText(); Paint.Style lastStyle = paint.getStyle(); Paint.Align lastAlign = paint.getTextAlign(); paint.setColor(Color.YELLOW); paint.setStyle(Paint.Style.FILL); canvas.drawRect(params.insetPaddingLeft, token.y - startTop - getTokenAscent(0), params.parentWidth - params.insetPaddingRight, token.y - startTop + getTokenDescent(0), paint); paint.setColor(Color.BLACK); paint.setFakeBoldText(true); paint.setTextAlign(Paint.Align.CENTER); canvas.drawText("LINEBREAK", params.insetPaddingLeft + (params.parentWidth - params.insetPaddingRight - params.insetPaddingLeft) / 2, token.y - startTop, paint); paint.setStyle(lastStyle); paint.setColor(lastColor); paint.setTextAlign(lastAlign); paint.setFakeBoldText(lastFakeBold); } } } }