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