SkDebugger.h revision 57f74e0aa931e7784d47cba3ecc83020aa8e72b2
1 2/* 3 * Copyright 2012 Google Inc. 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 9 10#ifndef SKDEBUGGER_H_ 11#define SKDEBUGGER_H_ 12 13#include "SkDebugCanvas.h" 14#include "SkPicture.h" 15#include "SkTArray.h" 16 17class SkString; 18 19class SkDebugger { 20public: 21 SkDebugger(); 22 23 ~SkDebugger(); 24 25 void setIndex(int index) { 26 fIndex = index; 27 } 28 void draw(SkCanvas* canvas) { 29 if (fIndex > 0) { 30 fDebugCanvas->drawTo(canvas, fIndex); 31 } 32 } 33 34 void step(); 35 void stepBack(); 36 void play(); 37 void rewind(); 38 39 bool isCommandVisible(int index) { 40 return fDebugCanvas->getDrawCommandVisibilityAt(index); 41 } 42 43 void setCommandVisible(int index, bool isVisible) { 44 fDebugCanvas->toggleCommand(index, isVisible); 45 } 46 47 SkTArray<SkString>* getDrawCommandsAsStrings() { 48 return fDebugCanvas->getDrawCommandsAsStrings(); 49 } 50 51 SkTDArray<size_t>* getDrawCommandOffsets() { 52 return fDebugCanvas->getDrawCommandOffsets(); 53 } 54 55 const SkTDArray<SkDrawCommand*>& getDrawCommands() const { 56 return fDebugCanvas->getDrawCommands(); 57 } 58 59 void highlightCurrentCommand(bool on) { 60 fDebugCanvas->toggleFilter(on); 61 } 62 63 void resize(int width, int height) { 64 fDebugCanvas->setBounds(width, height); 65 } 66 67 void loadPicture(SkPicture* picture); 68 69 SkPicture* copyPicture(); 70 71 int getSize() { 72 return fDebugCanvas->getSize(); 73 } 74 75 void setUserMatrix(SkMatrix userMatrix) { 76 // Should this live in debugger instead? 77 fDebugCanvas->setUserMatrix(userMatrix); 78 } 79 80 int getCommandAtPoint(int x, int y, int index) { 81 return fDebugCanvas->getCommandAtPoint(x, y, index); 82 } 83 84 SkTDArray<SkString*>* getCommandInfo(int index) { 85 return fDebugCanvas->getCommandInfo(index); 86 } 87 88 const SkMatrix& getCurrentMatrix() { 89 return fDebugCanvas->getCurrentMatrix(); 90 } 91 92 const SkIRect& getCurrentClip() { 93 return fDebugCanvas->getCurrentClip(); 94 } 95 96 int pictureHeight() { 97 return fPictureHeight; 98 } 99 100 int pictureWidth() { 101 return fPictureWidth; 102 } 103 104 int index() { 105 return fIndex; 106 } 107 108 void setOverdrawViz(bool overDrawViz) { 109 if (NULL != fDebugCanvas) { 110 fDebugCanvas->setOverdrawViz(overDrawViz); 111 } 112 } 113 114 void setMegaViz(bool megaViz) { 115 if (NULL != fDebugCanvas) { 116 fDebugCanvas->setMegaVizMode(megaViz); 117 } 118 } 119 120 void setTexFilterOverride(bool texFilterOverride, SkPaint::FilterLevel level) { 121 if (NULL != fDebugCanvas) { 122 fDebugCanvas->overrideTexFiltering(texFilterOverride, level); 123 } 124 } 125 126 void getOverviewText(const SkTDArray<double>* typeTimes, double totTime, 127 SkString* overview, int numRuns); 128 129private: 130 SkDebugCanvas* fDebugCanvas; 131 SkPicture* fPicture; 132 133 int fPictureWidth; 134 int fPictureHeight; 135 int fIndex; 136}; 137 138 139#endif /* SKDEBUGGER_H_ */ 140