/** * Returns a textual representation of the appearance of the object. * * @param canvas the canvas to visualize * @return The textual representation of the appearance of the object. */ public static String visualize(Canvas canvas) { ShadowCanvas shadowCanvas = Shadow.extract(canvas); return shadowCanvas.getDescription(); }
@Test public void resetCanvasHistory_shouldClearTheHistoryAndDescription() throws Exception { Canvas canvas = new Canvas(); canvas.drawPath(new Path(), new Paint()); canvas.drawText("hi", 1, 2, new Paint()); ShadowCanvas shadow = shadowOf(canvas); shadow.resetCanvasHistory(); assertThat(shadow.getPathPaintHistoryCount()).isEqualTo(0); assertThat(shadow.getTextHistoryCount()).isEqualTo(0); assertEquals("", shadow.getDescription()); }
@Implementation protected void drawBitmap(Bitmap bitmap, float left, float top, Paint paint) { describeBitmap(bitmap, paint); int x = (int) (left + translateX); int y = (int) (top + translateY); if (x != 0 || y != 0) { appendDescription(" at (" + x + "," + y + ")"); } if (scaleX != 1 && scaleY != 1) { appendDescription(" scaled by (" + scaleX + "," + scaleY + ")"); } }
private void separateLines() { if (getDescription().length() != 0) { appendDescription("\n"); } }
@Implementation protected void drawPath(Path path, Paint paint) { pathPaintEvents.add(new PathPaintHistoryEvent(new Path(path), new Paint(paint))); separateLines(); ShadowPath shadowPath = Shadow.extract(path); appendDescription("Path " + shadowPath.getPoints().toString()); }
private void describeBitmap(Bitmap bitmap, Paint paint) { separateLines(); ShadowBitmap shadowBitmap = Shadow.extract(bitmap); appendDescription(shadowBitmap.getDescription()); if (paint != null) { ColorFilter colorFilter = paint.getColorFilter(); if (colorFilter != null) { if (colorFilter instanceof ColorMatrixColorFilter) { ColorMatrixColorFilter colorMatrixColorFilter = (ColorMatrixColorFilter) colorFilter; ShadowColorMatrixColorFilter shadowColorMatrixColorFilter = Shadow.extract(colorMatrixColorFilter); ColorMatrix colorMatrix = shadowColorMatrixColorFilter.getMatrix(); appendDescription(" with ColorMatrixColorFilter<" + formatColorMatric(colorMatrix) + ">"); } else { appendDescription(" with " + colorFilter); } } } }
@Implementation protected void drawColor(int color) { appendDescription("draw color " + color); }
public boolean hasDrawnPath() { return getPathPaintHistoryCount() > 0; }
@Test public void drawPath_shouldRecordThePathAndThePaint() throws Exception { Canvas canvas = new Canvas(targetBitmap); Path path = new Path(); path.lineTo(10, 10); Paint paint = new Paint(); paint.setColor(Color.RED); paint.setAlpha(7); canvas.drawPath(path, paint); // changing the values on this Paint shouldn't affect recorded painted path paint.setColor(Color.BLUE); paint.setAlpha(8); ShadowCanvas shadow = shadowOf(canvas); assertThat(shadow.getPathPaintHistoryCount()).isEqualTo(1); ShadowPath drawnPath = shadowOf(shadow.getDrawnPath(0)); assertEquals(drawnPath.getPoints().get(0), new ShadowPath.Point(10, 10, LINE_TO)); Paint drawnPathPaint = shadow.getDrawnPathPaint(0); assertThat(drawnPathPaint.getColor()).isEqualTo(Color.RED); assertThat(drawnPathPaint.getAlpha()).isEqualTo(7); }
@Test public void drawPath_shouldRecordThePointsOfEachPathEvenWhenItIsTheSameInstance() throws Exception { Canvas canvas = new Canvas(targetBitmap); Paint paint = new Paint(); Path path = new Path(); path.lineTo(10, 10); canvas.drawPath(path, paint); path.reset(); path.lineTo(20, 20); canvas.drawPath(path, paint); ShadowCanvas shadow = shadowOf(canvas); assertThat(shadow.getPathPaintHistoryCount()).isEqualTo(2); assertEquals(shadowOf(shadow.getDrawnPath(0)).getPoints().get(0), new ShadowPath.Point(10, 10, LINE_TO)); assertEquals(shadowOf(shadow.getDrawnPath(1)).getPoints().get(0), new ShadowPath.Point(20, 20, LINE_TO)); }
private void describeBitmap(Bitmap bitmap, Paint paint) { separateLines(); appendDescription(shadowOf(bitmap).getDescription()); if (paint != null) { ColorFilter colorFilter = paint.getColorFilter(); if (colorFilter != null) { appendDescription(" with " + colorFilter); } } }
private void separateLines() { if (getDescription().length() != 0) { appendDescription("\n"); } }
private void describeBitmap(Bitmap bitmap, Paint paint) { separateLines(); ShadowBitmap shadowBitmap = Shadow.extract(bitmap); appendDescription(shadowBitmap.getDescription()); if (paint != null) { ColorFilter colorFilter = paint.getColorFilter(); if (colorFilter != null) { if (colorFilter instanceof ColorMatrixColorFilter) { ColorMatrixColorFilter colorMatrixColorFilter = (ColorMatrixColorFilter) colorFilter; ShadowColorMatrixColorFilter shadowColorMatrixColorFilter = Shadow.extract(colorMatrixColorFilter); ColorMatrix colorMatrix = shadowColorMatrixColorFilter.getMatrix(); appendDescription(" with ColorMatrixColorFilter<" + formatColorMatric(colorMatrix) + ">"); } else { appendDescription(" with " + colorFilter); } } } }
@Implementation protected void draw(android.graphics.Canvas canvas) { Drawable background = realView.getBackground(); if (background != null) { ShadowCanvas shadowCanvas = Shadow.extract(canvas); shadowCanvas.appendDescription("background:"); background.draw(canvas); } }
public boolean hasDrawnPath() { return getPathPaintHistoryCount() > 0; }
@Implementation protected void drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) { describeBitmap(bitmap, paint); StringBuilder descriptionBuilder = new StringBuilder(); if (dst != null) { descriptionBuilder.append(" at (").append(dst.left).append(",").append(dst.top) .append(") with height=").append(dst.height()).append(" and width=").append(dst.width()); } if (src != null) { descriptionBuilder.append( " taken from ").append(src.toString()); } appendDescription(descriptionBuilder.toString()); }
/** * Returns a textual representation of the appearance of the object. * * @param view the view to visualize * @return Textual representation of the appearance of the object. */ public static String visualize(View view) { Canvas canvas = new Canvas(); view.draw(canvas); ShadowCanvas shadowCanvas = Shadow.extract(canvas); return shadowCanvas.getDescription(); }
private void describeBitmap(Bitmap bitmap, Paint paint) { separateLines(); appendDescription(shadowOf(bitmap).getDescription()); if (paint != null) { ColorFilter colorFilter = paint.getColorFilter(); if (colorFilter != null) { appendDescription(" with " + colorFilter); } } }
private void separateLines() { if (getDescription().length() != 0) { appendDescription("\n"); } }
@Implementation public void drawColor(int color) { appendDescription("draw color " + color); }