SkDebugger.h revision 768ac85655017d4106444bf3ad044680a575ccaa
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 setMegaViz(bool megaViz) {
111        if (NULL != fDebugCanvas) {
112            fDebugCanvas->setMegaVizMode(megaViz);
113        }
114    }
115
116    void setTexFilterOverride(bool texFilterOverride, SkPaint::FilterLevel level) {
117        if (NULL != fDebugCanvas) {
118            fDebugCanvas->overrideTexFiltering(texFilterOverride, level);
119        }
120    }
121
122    void getOverviewText(const SkTDArray<double>* typeTimes, double totTime,
123                         SkString* overview, int numRuns);
124
125private:
126    SkDebugCanvas* fDebugCanvas;
127    SkPicture* fPicture;
128
129    int fPictureWidth;
130    int fPictureHeight;
131    int fIndex;
132};
133
134
135#endif /* SKDEBUGGER_H_ */
136