1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2016 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef SkOverdrawCanvas_DEFINED 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define SkOverdrawCanvas_DEFINED 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkNWayCanvas.h" 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/** 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Captures all drawing commands. Rather than draw the actual content, this device 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * increments the alpha channel of each pixel every time it would have been touched 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * by a draw call. This is useful for detecting overdraw. 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass SK_API SkOverdrawCanvas : public SkNWayCanvas { 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /* Does not take ownership of canvas */ 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkOverdrawCanvas(SkCanvas*); 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawText(const void*, size_t, SkScalar, SkScalar, const SkPaint&) override; 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPosText(const void*, size_t, const SkPoint[], const SkPaint&) override; 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPosTextH(const void*, size_t, const SkScalar[], SkScalar, const SkPaint&) override; 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawTextOnPath(const void*, size_t, const SkPath&, const SkMatrix*, 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPaint&) override; 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawTextRSXform(const void*, size_t, const SkRSXform[], const SkRect*, 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPaint&) override; 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawTextBlob(const SkTextBlob*, SkScalar, SkScalar, const SkPaint&) override; 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPatch(const SkPoint[12], const SkColor[4], const SkPoint[4], SkBlendMode, 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPaint&) override; 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPaint(const SkPaint&) override; 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawRect(const SkRect&, const SkPaint&) override; 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawRegion(const SkRegion&, const SkPaint&) override; 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawOval(const SkRect&, const SkPaint&) override; 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override; 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawRRect(const SkRRect&, const SkPaint&) override; 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPoints(PointMode, size_t, const SkPoint[], const SkPaint&) override; 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override; 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int, SkBlendMode, const SkRect*, const SkPaint*) override; 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPath(const SkPath&, const SkPaint&) override; 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawImage(const SkImage*, SkScalar, SkScalar, const SkPaint*) override; 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawImageRect(const SkImage*, const SkRect*, const SkRect&, const SkPaint*, 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SrcRectConstraint) override; 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawImageNine(const SkImage*, const SkIRect&, const SkRect&, const SkPaint*) override; 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawImageLattice(const SkImage*, const Lattice&, const SkRect&, const SkPaint*) override; 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawBitmap(const SkBitmap&, SkScalar, SkScalar, const SkPaint*) override; 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawBitmapRect(const SkBitmap&, const SkRect*, const SkRect&, const SkPaint*, 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SrcRectConstraint) override; 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawBitmapNine(const SkBitmap&, const SkIRect&, const SkRect&, const SkPaint*) override; 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawBitmapLattice(const SkBitmap&, const Lattice&, const SkRect&, 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPaint*) override; 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawDrawable(SkDrawable*, const SkMatrix*) override; 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override; 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void drawPosTextCommon(const void*, size_t, const SkScalar[], int, const SkPoint&, 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPaint&); 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot inline SkPaint overdrawPaint(const SkPaint& paint); 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPaint fPaint; 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot typedef SkNWayCanvas INHERITED; 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 71