blob: ffb2953272d8e674e6f1041c7a8a63012dbacf52 [file] [log] [blame]
chudy@google.com607357f2012-08-07 16:12:23 +00001
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"
robertphillips@google.com8a1cdae2012-11-19 20:44:29 +000015#include "SkTArray.h"
chudy@google.com607357f2012-08-07 16:12:23 +000016
borenet@google.com2d9dbd42013-03-12 13:07:40 +000017class SkString;
18
chudy@google.com607357f2012-08-07 16:12:23 +000019class 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
robertphillips@google.com8a1cdae2012-11-19 20:44:29 +000047 SkTArray<SkString>* getDrawCommandsAsStrings() {
chudy@google.com607357f2012-08-07 16:12:23 +000048 return fDebugCanvas->getDrawCommandsAsStrings();
49 }
50
commit-bot@chromium.org57f74e02014-03-25 23:31:33 +000051 SkTDArray<size_t>* getDrawCommandOffsets() {
52 return fDebugCanvas->getDrawCommandOffsets();
53 }
54
robertphillips@google.com8a1cdae2012-11-19 20:44:29 +000055 const SkTDArray<SkDrawCommand*>& getDrawCommands() const {
56 return fDebugCanvas->getDrawCommands();
57 }
58
chudy@google.com607357f2012-08-07 16:12:23 +000059 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
robertphillips@google.com25bc2f82013-01-22 18:03:56 +000069 SkPicture* copyPicture();
chudy@google.com607357f2012-08-07 16:12:23 +000070
71 int getSize() {
72 return fDebugCanvas->getSize();
73 }
74
bungeman@google.come8cc6e82013-01-17 16:30:56 +000075 void setUserMatrix(SkMatrix userMatrix) {
chudy@google.com607357f2012-08-07 16:12:23 +000076 // Should this live in debugger instead?
bungeman@google.come8cc6e82013-01-17 16:30:56 +000077 fDebugCanvas->setUserMatrix(userMatrix);
chudy@google.com607357f2012-08-07 16:12:23 +000078 }
79
80 int getCommandAtPoint(int x, int y, int index) {
81 return fDebugCanvas->getCommandAtPoint(x, y, index);
82 }
83
chudy@google.com97cee972012-08-07 20:41:37 +000084 SkTDArray<SkString*>* getCommandInfo(int index) {
chudy@google.com607357f2012-08-07 16:12:23 +000085 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
robertphillips@google.comf4741c12013-02-06 20:13:54 +0000108 void setOverdrawViz(bool overDrawViz) {
109 if (NULL != fDebugCanvas) {
110 fDebugCanvas->setOverdrawViz(overDrawViz);
111 }
112 }
113
commit-bot@chromium.org2a67e122014-05-19 13:53:10 +0000114 void setPathOps(bool pathOps) {
115 if (NULL != fDebugCanvas) {
116 fDebugCanvas->setAllowSimplifyClip(pathOps);
117 }
118 }
119
commit-bot@chromium.org768ac852014-03-03 16:32:17 +0000120 void setMegaViz(bool megaViz) {
121 if (NULL != fDebugCanvas) {
122 fDebugCanvas->setMegaVizMode(megaViz);
123 }
124 }
125
robertphillips@google.com32bbcf82013-10-17 17:56:10 +0000126 void setTexFilterOverride(bool texFilterOverride, SkPaint::FilterLevel level) {
127 if (NULL != fDebugCanvas) {
128 fDebugCanvas->overrideTexFiltering(texFilterOverride, level);
129 }
130 }
131
skia.committer@gmail.com91274b92013-03-13 07:01:04 +0000132 void getOverviewText(const SkTDArray<double>* typeTimes, double totTime,
robertphillips@google.come428f9b2013-03-12 15:33:40 +0000133 SkString* overview, int numRuns);
robertphillips@google.comf4741c12013-02-06 20:13:54 +0000134
commit-bot@chromium.org2a67e122014-05-19 13:53:10 +0000135 void getClipStackText(SkString* clipStack);
136
chudy@google.com607357f2012-08-07 16:12:23 +0000137private:
138 SkDebugCanvas* fDebugCanvas;
139 SkPicture* fPicture;
140
141 int fPictureWidth;
142 int fPictureHeight;
143 int fIndex;
144};
145
146
147#endif /* SKDEBUGGER_H_ */