1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2012 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 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef SKDEBUGCANVAS_H_ 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define SKDEBUGCANVAS_H_ 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkCanvas.h" 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkDrawCommand.h" 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPath.h" 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPathOps.h" 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPicture.h" 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkString.h" 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkTArray.h" 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkVertices.h" 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "UrlDataManager.h" 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass GrAuditTrail; 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass SkNWayCanvas; 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass SkDebugCanvas : public SkCanvas { 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkDebugCanvas(int width, int height); 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot ~SkDebugCanvas() override; 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void toggleFilter(bool toggle) { fFilter = toggle; } 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setMegaVizMode(bool megaVizMode) { fMegaVizMode = megaVizMode; } 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool getMegaVizMode() const { return fMegaVizMode; } 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Enable or disable overdraw visualization 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setOverdrawViz(bool overdrawViz); 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool getOverdrawViz() const { return fOverdrawViz; } 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Set the color of the clip visualization. An alpha of zero renders the clip invisible. 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setClipVizColor(SkColor clipVizColor) { this->fClipVizColor = clipVizColor; } 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkColor getClipVizColor() const { return fClipVizColor; } 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setDrawGpuOpBounds(bool drawGpuOpBounds) { fDrawGpuOpBounds = drawGpuOpBounds; } 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool getDrawGpuOpBounds() const { return fDrawGpuOpBounds; } 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool getAllowSimplifyClip() const { return fAllowSimplifyClip; } 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setPicture(SkPicture *picture) { fPicture = picture; } 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Enable or disable texure filtering override 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void overrideTexFiltering(bool overrideTexFiltering, SkFilterQuality); 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Executes all draw calls to the canvas. 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot @param canvas The canvas being drawn to 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void draw(SkCanvas *canvas); 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Executes the draw calls up to the specified index. 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot @param canvas The canvas being drawn to 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot @param index The index of the final command being executed 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot @param m an optional Mth gpu op to highlight, or -1 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void drawTo(SkCanvas *canvas, int index, int m = -1); 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 79fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Returns the most recently calculated transformation matrix 80fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 81fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkMatrix &getCurrentMatrix() { 82fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fMatrix; 83fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 84fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 85fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 86fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Returns the most recently calculated clip 87fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 88fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkIRect &getCurrentClip() { 89fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fClip; 90fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 91fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 92fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 93fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Returns the index of the last draw command to write to the pixel at (x,y) 94fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 95fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int getCommandAtPoint(int x, int y, int index); 96fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 97fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 98fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Removes the command at the specified index 99fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot @param index The index of the command to delete 100fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 101fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void deleteDrawCommandAt(int index); 102fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 103fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 104fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Returns the draw command at the given index. 105fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot @param index The index of the command 106fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 107fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkDrawCommand *getDrawCommandAt(int index); 108fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 109fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 110fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Sets the draw command for a given index. 111fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot @param index The index to overwrite 112fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot @param command The new command 113fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 114fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setDrawCommandAt(int index, SkDrawCommand *command); 115fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 116fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 117fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Returns information about the command at the given index. 118fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot @param index The index of the command 119fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 120fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkTDArray<SkString *> *getCommandInfo(int index) const; 121fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 122fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 123fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Returns the visibility of the command at the given index. 124fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot @param index The index of the command 125fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 126fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool getDrawCommandVisibilityAt(int index); 127fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 128fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 129fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Returns the vector of draw commands 130fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 131fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SK_ATTR_DEPRECATED("please use getDrawCommandAt and getSize instead") 132fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkTDArray<SkDrawCommand *> &getDrawCommands() const; 133fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 134fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 135fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Returns the vector of draw commands. Do not use this entry 136fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot point - it is going away! 137fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 138fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkTDArray<SkDrawCommand *> &getDrawCommands(); 139fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 140fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 141fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Returns length of draw command vector. 142fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 143fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int getSize() const { 144fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fCommandVector.count(); 145fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 146fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 147fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 148fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Toggles the visibility / execution of the draw command at index i with 149fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot the value of toggle. 150fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 151fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void toggleCommand(int index, bool toggle); 152fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 153fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setUserMatrix(SkMatrix matrix) { 154fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fUserMatrix = matrix; 155fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 156fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 157fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkString clipStackData() const { return fClipStackData; } 158fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 159fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 160fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Returns a JSON object representing up to the Nth draw, where N is less than 161fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkDebugCanvas::getSize(). The encoder may use the UrlDataManager to store binary data such 162fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot as images, referring to them via URLs embedded in the JSON. 163fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 164fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Json::Value toJSON(UrlDataManager &urlDataManager, int n, SkCanvas *); 165fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 166fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Json::Value toJSONOpList(int n, SkCanvas*); 167fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 168fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void detachCommands(SkTDArray<SkDrawCommand*>* dst) { 169fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fCommandVector.swap(*dst); 170fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 171fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 172fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprotected: 173fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void willSave() override; 174fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 175fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec &) override; 176fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 177fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void willRestore() override; 178fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 179fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void didConcat(const SkMatrix &) override; 180fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 181fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void didSetMatrix(const SkMatrix &) override; 182fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 183fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawAnnotation(const SkRect&, const char[], SkData*) override; 184fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; 185fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, 186fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPaint&) override; 187fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], 188fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPaint&) override; 189fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], 190fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkScalar constY, const SkPaint&) override; 191fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& path, 192fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkMatrix* matrix, const SkPaint&) override; 193fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawTextRSXform(const void* text, size_t byteLength, const SkRSXform[], const SkRect*, 194fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPaint&) override; 195fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, 196fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPaint& paint) override; 197fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 198fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], 199fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPoint texCoords[4], SkBlendMode, const SkPaint& paint) override; 200fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPaint(const SkPaint&) override; 201fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 202fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawRect(const SkRect&, const SkPaint&) override; 203fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawOval(const SkRect&, const SkPaint&) override; 204fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override; 205fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawRRect(const SkRRect&, const SkPaint&) override; 206fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override; 207fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override; 208fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPath(const SkPath&, const SkPaint&) override; 209fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint*) override; 210fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawBitmapRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint*, 211fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SrcRectConstraint) override; 212fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawImage(const SkImage*, SkScalar left, SkScalar top, const SkPaint*) override; 213fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawImageLattice(const SkImage* image, const Lattice& lattice, 214fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkRect& dst, const SkPaint* paint) override; 215fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawImageRect(const SkImage*, const SkRect* src, const SkRect& dst, 216fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPaint*, SrcRectConstraint) override; 217fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst, 218fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkPaint*) override; 219fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onClipRect(const SkRect&, SkClipOp, ClipEdgeStyle) override; 220fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onClipRRect(const SkRRect&, SkClipOp, ClipEdgeStyle) override; 221fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onClipPath(const SkPath&, SkClipOp, ClipEdgeStyle) override; 222fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onClipRegion(const SkRegion& region, SkClipOp) override; 223fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 224fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override; 225fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 226fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void markActiveCommands(int index); 227fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 228fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 229fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkTDArray<SkDrawCommand*> fCommandVector; 230fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPicture* fPicture; 231fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool fFilter; 232fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool fMegaVizMode; 233fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkMatrix fUserMatrix; 234fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkMatrix fMatrix; 235fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkIRect fClip; 236fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 237fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkString fClipStackData; 238fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool fCalledAddStackData; 239fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkPath fSaveDevPath; 240fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 241fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool fOverdrawViz; 242fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool fOverrideFilterQuality; 243fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkFilterQuality fFilterQuality; 244fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkColor fClipVizColor; 245fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool fDrawGpuOpBounds; 246fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 247fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 248fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot The active saveLayer commands at a given point in the renderering. 249fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Only used when "mega" visualization is enabled. 250fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 251fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkTDArray<SkDrawCommand*> fActiveLayers; 252fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 253fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 254fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Adds the command to the class' vector of commands. 255fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot @param command The draw command for execution 256fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 257fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void addDrawCommand(SkDrawCommand* command); 258fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 259fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot /** 260fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot Applies any panning and zooming the user has specified before 261fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot drawing anything else into the canvas. 262fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 263fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void applyUserTransform(SkCanvas* canvas); 264fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 265fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void resetClipStackData() { fClipStackData.reset(); fCalledAddStackData = false; } 266fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 267fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void addClipStackData(const SkPath& devPath, const SkPath& operand, SkClipOp elementOp); 268fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void addPathData(const SkPath& path, const char* pathName); 269fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool lastClipStackData(const SkPath& devPath); 270fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void outputConicPoints(const SkPoint* pts, SkScalar weight); 271fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void outputPoints(const SkPoint* pts, int count); 272fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void outputPointsCommon(const SkPoint* pts, int count); 273fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void outputScalar(SkScalar num); 274fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 275fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot GrAuditTrail* getAuditTrail(SkCanvas*); 276fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 277fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void drawAndCollectOps(int n, SkCanvas*); 278fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void cleanupAuditTrail(SkCanvas*); 279fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 280fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot typedef SkCanvas INHERITED; 281fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 282fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 283fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif 284