1902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com/* 2902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Copyright 2012 Google Inc. 3902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * 4902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Use of this source code is governed by a BSD-style license that can be 5902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * found in the LICENSE file. 6902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 7902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 8902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 9902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#ifndef SKDEBUGCANVAS_H_ 10902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#define SKDEBUGCANVAS_H_ 11902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 12902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "SkCanvas.h" 13902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "SkDrawCommand.h" 14d3ebb48320cf1b7e969974673e4bd7743816985ebungeman#include "SkPath.h" 152a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org#include "SkPathOps.h" 16902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "SkPicture.h" 17fb8c1fcab19c99b56d2fdcf6234751d6f0465142reed#include "SkString.h" 18d3ebb48320cf1b7e969974673e4bd7743816985ebungeman#include "SkTArray.h" 19199fb875c5e63c13233209e89b943c7ac7ab6665Brian Salomon#include "SkVertices.h" 20402cd91f60bcf1a2f86f769bd02d79ace73770c9ethannicholas#include "UrlDataManager.h" 21902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 22ae47aeeda09408989223291c54d12b2a98fa2b12joshualittclass GrAuditTrail; 2365cdb57ae8fd23ccec5f7f4f86b34e4aa85c45aefmalitaclass SkNWayCanvas; 2432bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com 250f61faa7b7041efcedd1363b11b44fa97ad97448Mike Kleinclass SkDebugCanvas : public SkCanvas { 26902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 2780a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com SkDebugCanvas(int width, int height); 2895302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack 29d3b65972aad96453ff4510caa3e25a2b847c6d1eBrian Salomon ~SkDebugCanvas() override; 30902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 31768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org void toggleFilter(bool toggle) { fFilter = toggle; } 32768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org 33768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org void setMegaVizMode(bool megaVizMode) { fMegaVizMode = megaVizMode; } 3495302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack 3557f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org bool getMegaVizMode() const { return fMegaVizMode; } 36902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 37902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 38f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com * Enable or disable overdraw visualization 39f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com */ 4065cdb57ae8fd23ccec5f7f4f86b34e4aa85c45aefmalita void setOverdrawViz(bool overdrawViz); 4195302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack 4257f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org bool getOverdrawViz() const { return fOverdrawViz; } 4357f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org 440a0520afccb9dcad9db2258c936456e69012fa34ethannicholas /** 450a0520afccb9dcad9db2258c936456e69012fa34ethannicholas * Set the color of the clip visualization. An alpha of zero renders the clip invisible. 460a0520afccb9dcad9db2258c936456e69012fa34ethannicholas */ 470a0520afccb9dcad9db2258c936456e69012fa34ethannicholas void setClipVizColor(SkColor clipVizColor) { this->fClipVizColor = clipVizColor; } 4895302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack 490a0520afccb9dcad9db2258c936456e69012fa34ethannicholas SkColor getClipVizColor() const { return fClipVizColor; } 500a0520afccb9dcad9db2258c936456e69012fa34ethannicholas 51144a5c518ae921f210bdd9647c061e57d18f440cBrian Salomon void setDrawGpuOpBounds(bool drawGpuOpBounds) { fDrawGpuOpBounds = drawGpuOpBounds; } 5210d8fc29bc1605c134e98f5b58c2efb73cef6073joshualitt 53144a5c518ae921f210bdd9647c061e57d18f440cBrian Salomon bool getDrawGpuOpBounds() const { return fDrawGpuOpBounds; } 545d5207a39e294e4e810685b2cff1d7c770e21b9cjoshualitt 552a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org bool getAllowSimplifyClip() const { return fAllowSimplifyClip; } 562a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org 5795302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack void setPicture(SkPicture *picture) { fPicture = picture; } 58f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com 59f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com /** 6032bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com * Enable or disable texure filtering override 6132bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com */ 6293a1215fe0ab007ce941c721f1fd3e9dcb5d4754reed void overrideTexFiltering(bool overrideTexFiltering, SkFilterQuality); 6332bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com 6432bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com /** 65902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Executes all draw calls to the canvas. 66902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param canvas The canvas being drawn to 67902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 6895302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack void draw(SkCanvas *canvas); 69902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 70902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 71902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Executes the draw calls up to the specified index. 72902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param canvas The canvas being drawn to 73902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param index The index of the final command being executed 74144a5c518ae921f210bdd9647c061e57d18f440cBrian Salomon @param m an optional Mth gpu op to highlight, or -1 75902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 7695302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack void drawTo(SkCanvas *canvas, int index, int m = -1); 770b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com 780b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com /** 79a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com Returns the most recently calculated transformation matrix 80a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com */ 8195302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack const SkMatrix &getCurrentMatrix() { 82a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com return fMatrix; 83a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com } 84a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com 85a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com /** 86a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com Returns the most recently calculated clip 87a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com */ 8895302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack const SkIRect &getCurrentClip() { 89a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com return fClip; 90a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com } 91a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com 92a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com /** 930b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com Returns the index of the last draw command to write to the pixel at (x,y) 940b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com */ 95830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com int getCommandAtPoint(int x, int y, int index); 96902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 97902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 9850c84da68b17647371a81593402e897d639989e4robertphillips@google.com Removes the command at the specified index 9950c84da68b17647371a81593402e897d639989e4robertphillips@google.com @param index The index of the command to delete 10050c84da68b17647371a81593402e897d639989e4robertphillips@google.com */ 10150c84da68b17647371a81593402e897d639989e4robertphillips@google.com void deleteDrawCommandAt(int index); 10250c84da68b17647371a81593402e897d639989e4robertphillips@google.com 10350c84da68b17647371a81593402e897d639989e4robertphillips@google.com /** 104902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Returns the draw command at the given index. 105902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param index The index of the command 106902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 10795302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack SkDrawCommand *getDrawCommandAt(int index); 108902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 109902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 11050c84da68b17647371a81593402e897d639989e4robertphillips@google.com Sets the draw command for a given index. 11150c84da68b17647371a81593402e897d639989e4robertphillips@google.com @param index The index to overwrite 11250c84da68b17647371a81593402e897d639989e4robertphillips@google.com @param command The new command 11350c84da68b17647371a81593402e897d639989e4robertphillips@google.com */ 11495302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack void setDrawCommandAt(int index, SkDrawCommand *command); 11550c84da68b17647371a81593402e897d639989e4robertphillips@google.com 11650c84da68b17647371a81593402e897d639989e4robertphillips@google.com /** 117902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Returns information about the command at the given index. 118902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param index The index of the command 119902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 12095302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack const SkTDArray<SkString *> *getCommandInfo(int index) const; 121902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 122902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 1237e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com Returns the visibility of the command at the given index. 1247e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com @param index The index of the command 1257e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com */ 1267e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com bool getDrawCommandVisibilityAt(int index); 1277e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 1287e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com /** 129902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Returns the vector of draw commands 130902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 1314469938e92d779dff05e745559e67907bbf21e78reed@google.com SK_ATTR_DEPRECATED("please use getDrawCommandAt and getSize instead") 13295302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack const SkTDArray<SkDrawCommand *> &getDrawCommands() const; 1332e71f1619d9a2c51c1292e618f42a56ad2da1de8skia.committer@gmail.com 134febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com /** 135febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com Returns the vector of draw commands. Do not use this entry 136febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com point - it is going away! 137febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com */ 13895302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack SkTDArray<SkDrawCommand *> &getDrawCommands(); 139902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 140902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 141f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com Returns length of draw command vector. 142f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com */ 1430d4fe14a41bd04535310f8b2edee9e30191fdd79commit-bot@chromium.org int getSize() const { 14467baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com return fCommandVector.count(); 145f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com } 146f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com 147902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 148902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Toggles the visibility / execution of the draw command at index i with 149902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com the value of toggle. 150902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 151902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com void toggleCommand(int index, bool toggle); 152902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 153e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com void setUserMatrix(SkMatrix matrix) { 154e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com fUserMatrix = matrix; 155830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com } 156830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com 1572a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org SkString clipStackData() const { return fClipStackData; } 1582a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org 159402cd91f60bcf1a2f86f769bd02d79ace73770c9ethannicholas /** 1600a0520afccb9dcad9db2258c936456e69012fa34ethannicholas Returns a JSON object representing up to the Nth draw, where N is less than 1619d524f22bfde5dc3dc8f48e1be39bdebd3bb0304halcanary SkDebugCanvas::getSize(). The encoder may use the UrlDataManager to store binary data such 1620a0520afccb9dcad9db2258c936456e69012fa34ethannicholas as images, referring to them via URLs embedded in the JSON. 163402cd91f60bcf1a2f86f769bd02d79ace73770c9ethannicholas */ 16495302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack Json::Value toJSON(UrlDataManager &urlDataManager, int n, SkCanvas *); 165402cd91f60bcf1a2f86f769bd02d79ace73770c9ethannicholas 166144a5c518ae921f210bdd9647c061e57d18f440cBrian Salomon Json::Value toJSONOpList(int n, SkCanvas*); 167ae47aeeda09408989223291c54d12b2a98fa2b12joshualitt 168144a5c518ae921f210bdd9647c061e57d18f440cBrian Salomon //////////////////////////////////////////////////////////////////////////////// 169144a5c518ae921f210bdd9647c061e57d18f440cBrian Salomon // Inherited from SkCanvas 170144a5c518ae921f210bdd9647c061e57d18f440cBrian Salomon //////////////////////////////////////////////////////////////////////////////// 171902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1723b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com static const int kVizImageHeight = 256; 1733b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com static const int kVizImageWidth = 256; 1743b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com 17536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool isClipEmpty() const override { return false; } 17695302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack 17736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool isClipRect() const override { return true; } 17895302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack 17942e8c53b3ef58f887a623b410d9783b4d4ab4921Mike Reed SkRect onGetLocalClipBounds() const override { 18042e8c53b3ef58f887a623b410d9783b4d4ab4921Mike Reed return SkRect::MakeIWH(this->imageInfo().width(), this->imageInfo().height()); 1818f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com } 18295302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack 18342e8c53b3ef58f887a623b410d9783b4d4ab4921Mike Reed SkIRect onGetDeviceClipBounds() const override { 18442e8c53b3ef58f887a623b410d9783b4d4ab4921Mike Reed return SkIRect::MakeWH(this->imageInfo().width(), this->imageInfo().height()); 1858f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com } 1868f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com 187ab5827354e2c23624acc3fc1fe4a83788bc99e96commit-bot@chromium.orgprotected: 18836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void willSave() override; 18995302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack 19095302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec &) override; 19195302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack 19236352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void willRestore() override; 193e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org 19495302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack void didConcat(const SkMatrix &) override; 19544c48d062f7996b5b46917e1b312a32ad101f326commit-bot@chromium.org 19695302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack void didSetMatrix(const SkMatrix &) override; 19795302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack 19895302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack#ifdef SK_EXPERIMENTAL_SHADOWING 1990f61faa7b7041efcedd1363b11b44fa97ad97448Mike Klein void didTranslateZ(SkScalar) override; 20095302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack#else 20195302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack void didTranslateZ(SkScalar); 20295302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack#endif 203e5de130788c8637d2f7df9ddb0241b78e04d5882vjiaoblack 20497660ccbd10d83a2bb1fa88c672d17132649efefreed void onDrawAnnotation(const SkRect&, const char[], SkData*) override; 20536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; 2069bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips void onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, 20736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const SkPaint&) override; 2089bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], 20936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const SkPaint&) override; 2109bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], 21136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein SkScalar constY, const SkPaint&) override; 2129bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& path, 21336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const SkMatrix* matrix, const SkPaint&) override; 21445561a0b15fe045ba272c328684c3f7ae290785areed void onDrawTextRSXform(const void* text, size_t byteLength, const SkRSXform[], const SkRect*, 21545561a0b15fe045ba272c328684c3f7ae290785areed const SkPaint&) override; 2169bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, 21736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const SkPaint& paint) override; 2189bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips 2199bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], 220faba3715b8ddfaa0ce4df79bc8006e9bc7694e5bMike Reed const SkPoint texCoords[4], SkBlendMode, const SkPaint& paint) override; 22136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawPaint(const SkPaint&) override; 2229bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips 22336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawRect(const SkRect&, const SkPaint&) override; 22436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawOval(const SkRect&, const SkPaint&) override; 225ac3aa245acc7b469aa2f0d0078e53401d78ac8b9bsalomon void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override; 22636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawRRect(const SkRRect&, const SkPaint&) override; 22736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override; 228fed9cfdc0216152d7fffe6d838ea7281466ffe74Mike Reed void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override; 22936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawPath(const SkPath&, const SkPaint&) override; 23036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint*) override; 23141af966ab338e95eee81ab618ab28195075338f7reed void onDrawBitmapRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint*, 232562fe4767cc73e08a4e039362bc0336aea66ecfbreed SrcRectConstraint) override; 23336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawImage(const SkImage*, SkScalar left, SkScalar top, const SkPaint*) override; 234ac42aebb7b49ef3d916da1e5a75b4c7cd4cfb119Stan Iliev void onDrawImageLattice(const SkImage* image, const Lattice& lattice, 235ac42aebb7b49ef3d916da1e5a75b4c7cd4cfb119Stan Iliev const SkRect& dst, const SkPaint* paint) override; 23641af966ab338e95eee81ab618ab28195075338f7reed void onDrawImageRect(const SkImage*, const SkRect* src, const SkRect& dst, 237562fe4767cc73e08a4e039362bc0336aea66ecfbreed const SkPaint*, SrcRectConstraint) override; 23841af966ab338e95eee81ab618ab28195075338f7reed void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst, 23936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const SkPaint*) override; 240c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed void onClipRect(const SkRect&, SkClipOp, ClipEdgeStyle) override; 241c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed void onClipRRect(const SkRRect&, SkClipOp, ClipEdgeStyle) override; 242c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed void onClipPath(const SkPath&, SkClipOp, ClipEdgeStyle) override; 243c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed void onClipRegion(const SkRegion& region, SkClipOp) override; 24436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein 24536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override; 2469b14f26d0f3a974f3dd626c8354e1db1cfcd322frobertphillips 24795302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack#ifdef SK_EXPERIMENTAL_SHADOWING 24895302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack void onDrawShadowedPicture(const SkPicture*, 24995302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack const SkMatrix*, 250e6f5d5623160a69e1585f5121a3695092327dfe0vjiaoblack const SkPaint*, 251e6f5d5623160a69e1585f5121a3695092327dfe0vjiaoblack const SkShadowParams& params) override; 25295302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack#else 25395302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack void onDrawShadowedPicture(const SkPicture*, 25495302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack const SkMatrix*, 255e6f5d5623160a69e1585f5121a3695092327dfe0vjiaoblack const SkPaint*, 256e6f5d5623160a69e1585f5121a3695092327dfe0vjiaoblack const SkShadowParams& params); 25795302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack#endif 25895302da19d8b0a3bcd9d9be0e79f486760787f09vjiaoblack 2591643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org void markActiveCommands(int index); 260768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org 261902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 26267baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com SkTDArray<SkDrawCommand*> fCommandVector; 26357f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org SkPicture* fPicture; 2647e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com bool fFilter; 265768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org bool fMegaVizMode; 266e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com SkMatrix fUserMatrix; 267a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com SkMatrix fMatrix; 268a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com SkIRect fClip; 26932bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com 2702a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org SkString fClipStackData; 2712a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org bool fCalledAddStackData; 2722a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org SkPath fSaveDevPath; 2732a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org 274f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com bool fOverdrawViz; 27565cdb57ae8fd23ccec5f7f4f86b34e4aa85c45aefmalita bool fOverrideFilterQuality; 27665cdb57ae8fd23ccec5f7f4f86b34e4aa85c45aefmalita SkFilterQuality fFilterQuality; 2770a0520afccb9dcad9db2258c936456e69012fa34ethannicholas SkColor fClipVizColor; 278144a5c518ae921f210bdd9647c061e57d18f440cBrian Salomon bool fDrawGpuOpBounds; 279902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 280902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 2811643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org The active saveLayer commands at a given point in the renderering. 2821643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org Only used when "mega" visualization is enabled. 2831643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org */ 2841643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org SkTDArray<SkDrawCommand*> fActiveLayers; 2851643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org 286ade9a3485e78d471f5f0902e9e50a2ec74c88e76skia.committer@gmail.com /** 287902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Adds the command to the classes vector of commands. 288902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param command The draw command for execution 289902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 290902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com void addDrawCommand(SkDrawCommand* command); 291830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com 292830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com /** 293830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com Applies any panning and zooming the user has specified before 294830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com drawing anything else into the canvas. 295830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com */ 296830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com void applyUserTransform(SkCanvas* canvas); 2973b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com 2982a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org void resetClipStackData() { fClipStackData.reset(); fCalledAddStackData = false; } 2992a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org 300c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed void addClipStackData(const SkPath& devPath, const SkPath& operand, SkClipOp elementOp); 3012a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org void addPathData(const SkPath& path, const char* pathName); 3022a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org bool lastClipStackData(const SkPath& devPath); 3032a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org void outputConicPoints(const SkPoint* pts, SkScalar weight); 3042a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org void outputPoints(const SkPoint* pts, int count); 3052a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org void outputPointsCommon(const SkPoint* pts, int count); 3062a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org void outputScalar(SkScalar num); 3073b9e8be760ad0e576d5145e0aecf0dc73efcd640skia.committer@gmail.com 308ae47aeeda09408989223291c54d12b2a98fa2b12joshualitt GrAuditTrail* getAuditTrail(SkCanvas*); 309ae47aeeda09408989223291c54d12b2a98fa2b12joshualitt 310144a5c518ae921f210bdd9647c061e57d18f440cBrian Salomon void drawAndCollectOps(int n, SkCanvas*); 311ae47aeeda09408989223291c54d12b2a98fa2b12joshualitt void cleanupAuditTrail(SkCanvas*); 31265cdb57ae8fd23ccec5f7f4f86b34e4aa85c45aefmalita 3133b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com typedef SkCanvas INHERITED; 314902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 315902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 316902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#endif 317