SkDebugger.h revision 32bbcf828d66ad244fa25b468bc3a229e531491f
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 const SkTDArray<SkDrawCommand*>& getDrawCommands() const { 52 return fDebugCanvas->getDrawCommands(); 53 } 54 55 void highlightCurrentCommand(bool on) { 56 fDebugCanvas->toggleFilter(on); 57 } 58 59 void resize(int width, int height) { 60 fDebugCanvas->setBounds(width, height); 61 } 62 63 void loadPicture(SkPicture* picture); 64 65 SkPicture* copyPicture(); 66 67 int getSize() { 68 return fDebugCanvas->getSize(); 69 } 70 71 void setUserMatrix(SkMatrix userMatrix) { 72 // Should this live in debugger instead? 73 fDebugCanvas->setUserMatrix(userMatrix); 74 } 75 76 int getCommandAtPoint(int x, int y, int index) { 77 return fDebugCanvas->getCommandAtPoint(x, y, index); 78 } 79 80 SkTDArray<SkString*>* getCommandInfo(int index) { 81 return fDebugCanvas->getCommandInfo(index); 82 } 83 84 const SkMatrix& getCurrentMatrix() { 85 return fDebugCanvas->getCurrentMatrix(); 86 } 87 88 const SkIRect& getCurrentClip() { 89 return fDebugCanvas->getCurrentClip(); 90 } 91 92 int pictureHeight() { 93 return fPictureHeight; 94 } 95 96 int pictureWidth() { 97 return fPictureWidth; 98 } 99 100 int index() { 101 return fIndex; 102 } 103 104 void setOverdrawViz(bool overDrawViz) { 105 if (NULL != fDebugCanvas) { 106 fDebugCanvas->setOverdrawViz(overDrawViz); 107 } 108 } 109 110 void setTexFilterOverride(bool texFilterOverride, SkPaint::FilterLevel level) { 111 if (NULL != fDebugCanvas) { 112 fDebugCanvas->overrideTexFiltering(texFilterOverride, level); 113 } 114 } 115 116 void getOverviewText(const SkTDArray<double>* typeTimes, double totTime, 117 SkString* overview, int numRuns); 118 119private: 120 SkDebugCanvas* fDebugCanvas; 121 SkPicture* fPicture; 122 123 int fPictureWidth; 124 int fPictureHeight; 125 int fIndex; 126}; 127 128 129#endif /* SKDEBUGGER_H_ */ 130