protected synchronized void drawLayout(Canvas canvas, int startY, int endY, boolean isCache) { if (isCache) { // clear canvas canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); } layout.draw(canvas, startY, endY); // onDraw border around if (getDocumentLayoutParams().isDebugging()) { IDocumentLayout.LayoutParams params = getDocumentLayoutParams(); int lastColor = paint.getColor(); float lastStrokeWidth = paint.getStrokeWidth(); Paint.Style lastStyle = paint.getStyle(); // border paint.setColor(Color.MAGENTA); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(4); float left = params.insetPaddingLeft; float top = params.insetPaddingTop >= startY && params.insetPaddingTop < endY ? params.insetPaddingTop : 0; float right = params.parentWidth - params.insetPaddingRight; float bottom = (bottom = layout.getMeasuredHeight() - params.insetPaddingBottom) >= startY && bottom < endY ? bottom - startY : canvas.getHeight(); canvas.drawRect(left, top, right, bottom, paint); paint.setStrokeWidth(lastStrokeWidth); paint.setColor(lastColor); paint.setStyle(lastStyle); } }
@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); } } } }
if (workPaint.bgColor != 0) { int c = workPaint.getColor(); Paint.Style s = workPaint.getStyle(); workPaint.setColor(workPaint.bgColor); workPaint.setStyle(Paint.Style.FILL);
@Override protected void draw(Canvas canvas) { final int save = canvas.save(); final PointF rotationPivot = getRotationPivot(); if (getRotation() != 0) { canvas.rotate(getRotation(), rotationPivot.x, rotationPivot.y); } canvas.translate(rectF.left, rectF.top); canvas.drawPath(super.path, paint); if (borderWidth != 0) { final Paint.Style oldStyle = paint.getStyle(); final float strokeWidth = paint.getStrokeWidth(); final int paintColor = paint.getColor(); paint.setStyle(Paint.Style.STROKE); paint.setColor(borderColor); paint.setStrokeWidth(borderWidth); canvas.drawPath(super.path, paint); paint.setColor(paintColor); paint.setStrokeWidth(strokeWidth); paint.setStyle(oldStyle); } canvas.restoreToCount(save); }