1607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 2607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com/* 3607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * Copyright 2012 Google Inc. 4607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * 5607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * Use of this source code is governed by a BSD-style license that can be 6607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com * found in the LICENSE file. 7607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com */ 8607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 9607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 10607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com#ifndef SKDEBUGGER_H_ 11607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com#define SKDEBUGGER_H_ 12607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 13607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com#include "SkDebugCanvas.h" 14607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com#include "SkPicture.h" 158a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com#include "SkTArray.h" 16607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 172d9dbd4f78314b4b36f67d6ebbf3e0f2d9a163e3borenet@google.comclass SkString; 182d9dbd4f78314b4b36f67d6ebbf3e0f2d9a163e3borenet@google.com 19607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.comclass SkDebugger { 20607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.compublic: 21607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com SkDebugger(); 22607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 23607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com ~SkDebugger(); 24607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 25607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com void setIndex(int index) { 26607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fIndex = index; 27607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 28607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com void draw(SkCanvas* canvas) { 295a2315e750f65a8b61faa509a65840c622f04424kkinnunen if (fIndex >= 0) { 30607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugCanvas->drawTo(canvas, fIndex); 31607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 32607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 33607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 34607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com void step(); 35607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com void stepBack(); 36607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com void play(); 37607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com void rewind(); 38607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 39607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com bool isCommandVisible(int index) { 40607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return fDebugCanvas->getDrawCommandVisibilityAt(index); 41607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 42607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 43607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com void setCommandVisible(int index, bool isVisible) { 44607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugCanvas->toggleCommand(index, isVisible); 45607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 46607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 475037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen SkDrawCommand* getDrawCommandAt(int index) { 485037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen return fDebugCanvas->getDrawCommandAt(index); 4957f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org } 5057f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org 518a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com const SkTDArray<SkDrawCommand*>& getDrawCommands() const { 528a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com return fDebugCanvas->getDrawCommands(); 538a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com } 548a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com 55607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com void highlightCurrentCommand(bool on) { 56607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com fDebugCanvas->toggleFilter(on); 57607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 58607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 59607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com void loadPicture(SkPicture* picture); 60607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 6125bc2f86c2b94ee1f0921d90e6629d8cb22f69b7robertphillips@google.com SkPicture* copyPicture(); 62607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 635037e9de94e57d36592cc596d831cc2b5ec45bd3kkinnunen int getSize() const { 64607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return fDebugCanvas->getSize(); 65607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 66607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 67e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com void setUserMatrix(SkMatrix userMatrix) { 68607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com // Should this live in debugger instead? 69e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com fDebugCanvas->setUserMatrix(userMatrix); 70607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 71607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 72607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com int getCommandAtPoint(int x, int y, int index) { 73607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return fDebugCanvas->getCommandAtPoint(x, y, index); 74607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 75607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 768c89c528f31dff25bce74aabe28abe23a772cb1efmalita const SkTDArray<SkString*>* getCommandInfo(int index) const { 77607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return fDebugCanvas->getCommandInfo(index); 78607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 79607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 80607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com const SkMatrix& getCurrentMatrix() { 81607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return fDebugCanvas->getCurrentMatrix(); 82607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 83607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 84607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com const SkIRect& getCurrentClip() { 85607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return fDebugCanvas->getCurrentClip(); 86607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 87607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 88a8d7f0b13cd4c6d773fcf055fe17db75d260fa05robertphillips SkRect pictureCull() const { 89a8d7f0b13cd4c6d773fcf055fe17db75d260fa05robertphillips return NULL == fPicture ? SkRect::MakeEmpty() : fPicture->cullRect(); 90607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 91607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 92607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com int index() { 93607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com return fIndex; 94607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com } 95607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 96f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com void setOverdrawViz(bool overDrawViz) { 9749f085dddff10473b6ebf832a974288300224e60bsalomon if (fDebugCanvas) { 98f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com fDebugCanvas->setOverdrawViz(overDrawViz); 99f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com } 100f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com } 101f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com 1022a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org void setPathOps(bool pathOps) { 10349f085dddff10473b6ebf832a974288300224e60bsalomon if (fDebugCanvas) { 1042a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org fDebugCanvas->setAllowSimplifyClip(pathOps); 1052a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org } 1062a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org } 1072a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org 108768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org void setMegaViz(bool megaViz) { 10949f085dddff10473b6ebf832a974288300224e60bsalomon if (fDebugCanvas) { 110768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org fDebugCanvas->setMegaVizMode(megaViz); 111768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org } 112768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org } 113768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org 114e7903c7397c694e343c2c0fcc5cabea351212f23reed void setTexFilterOverride(bool texFilterOverride, SkFilterQuality quality) { 11549f085dddff10473b6ebf832a974288300224e60bsalomon if (fDebugCanvas) { 116e7903c7397c694e343c2c0fcc5cabea351212f23reed fDebugCanvas->overrideTexFiltering(texFilterOverride, quality); 11732bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com } 11832bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com } 11932bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com 12091274b99722d9be62e077ab979c630c23cdd04b1skia.committer@gmail.com void getOverviewText(const SkTDArray<double>* typeTimes, double totTime, 121e428f9b1132c12299c204a333192495d7e748511robertphillips@google.com SkString* overview, int numRuns); 122f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com 1232a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org void getClipStackText(SkString* clipStack); 1242a67e123a3e559774a16a58cbe5106bc0fb86740commit-bot@chromium.org 125607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.comprivate: 126607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com SkDebugCanvas* fDebugCanvas; 127607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com SkPicture* fPicture; 128607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 129607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com int fIndex; 130607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com}; 131607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 132607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com 133607357fde8a9c4c70549d4223e0bd1181b012e0echudy@google.com#endif /* SKDEBUGGER_H_ */ 134