SkDebugCanvas.h revision f4741c1322944e194ca34a8f5cf8188fe2c0efe2
1902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
2902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com/*
3902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Copyright 2012 Google Inc.
4902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com *
5902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Use of this source code is governed by a BSD-style license that can be
6902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * found in the LICENSE file.
7902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */
8902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
9902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
10902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#ifndef SKDEBUGCANVAS_H_
11902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#define SKDEBUGCANVAS_H_
12902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
13902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "SkCanvas.h"
14902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "SkDrawCommand.h"
15902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "SkPicture.h"
168a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com#include "SkTArray.h"
1797cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com#include "SkString.h"
18902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
19902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comclass SkDebugCanvas : public SkCanvas {
20902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic:
2180a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com    SkDebugCanvas(int width, int height);
22f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com    virtual ~SkDebugCanvas();
23902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
24902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    void toggleFilter(bool toggle);
25902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
26902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /**
27f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com     * Enable or disable overdraw visualization
28f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com     */
29f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com    void setOverdrawViz(bool overdrawViz) { fOverdrawViz = overdrawViz; }
30f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com
31f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com    /**
32902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        Executes all draw calls to the canvas.
33902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        @param canvas  The canvas being drawn to
34902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     */
35902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    void draw(SkCanvas* canvas);
36902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
37902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /**
38902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        Executes the draw calls in the specified range.
39902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        @param canvas  The canvas being drawn to
40902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        @param i  The beginning of the range
41902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        @param j  The end of the range
42902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        TODO(chudy): Implement
43902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     */
44902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    void drawRange(SkCanvas* canvas, int i, int j);
45902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
46902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /**
47902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        Executes the draw calls up to the specified index.
48902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        @param canvas  The canvas being drawn to
49902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        @param index  The index of the final command being executed
50902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     */
510b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com    void drawTo(SkCanvas* canvas, int index);
520b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com
530b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com    /**
54a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com        Returns the most recently calculated transformation matrix
55a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com     */
56a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com    const SkMatrix& getCurrentMatrix() {
57a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com        return fMatrix;
58a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com    }
59a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com
60a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com    /**
61a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com        Returns the most recently calculated clip
62a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com     */
63a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com    const SkIRect& getCurrentClip() {
64a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com        return fClip;
65a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com    }
66a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com
67a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com    /**
680b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com        Returns the index of the last draw command to write to the pixel at (x,y)
690b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com     */
70830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com    int getCommandAtPoint(int x, int y, int index);
71902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
72902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /**
73902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        Returns the draw command at the given index.
74902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        @param index  The index of the command
75902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     */
76902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    SkDrawCommand* getDrawCommandAt(int index);
77902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
78902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /**
79902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        Returns information about the command at the given index.
80902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        @param index  The index of the command
81902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     */
8297cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com    SkTDArray<SkString*>* getCommandInfo(int index);
83902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
84902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /**
857e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com        Returns the visibility of the command at the given index.
867e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com        @param index  The index of the command
877e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com     */
887e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com    bool getDrawCommandVisibilityAt(int index);
897e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com
907e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com    /**
91902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        Returns the vector of draw commands
92902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     */
938a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com    const SkTDArray<SkDrawCommand*>& getDrawCommands() const;
94902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
95902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /**
96902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     * Returns the string vector of draw commands
97902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     */
988a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com    SkTArray<SkString>* getDrawCommandsAsStrings() const;
99902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
100902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /**
101f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com        Returns length of draw command vector.
102f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com     */
103f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com    int getSize() {
10467baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com        return fCommandVector.count();
105f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com    }
106f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com
107902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /**
108902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        Toggles the visibility / execution of the draw command at index i with
109902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        the value of toggle.
110902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     */
111902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    void toggleCommand(int index, bool toggle);
112902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
113b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com    void setBounds(int width, int height) {
114b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com        fWidth = width;
115b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com        fHeight = height;
116b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com    }
117b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com
118e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com    void setUserMatrix(SkMatrix matrix) {
119e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com        fUserMatrix = matrix;
120830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com    }
121830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com
122902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com////////////////////////////////////////////////////////////////////////////////
123902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com// Inherited from SkCanvas
124902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com////////////////////////////////////////////////////////////////////////////////
125902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
126902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void clear(SkColor) SK_OVERRIDE;
127902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
128902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual bool clipPath(const SkPath&, SkRegion::Op, bool) SK_OVERRIDE;
129902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
130902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual bool clipRect(const SkRect&, SkRegion::Op, bool) SK_OVERRIDE;
131902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
13267baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com    virtual bool clipRRect(const SkRRect& rrect,
13367baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com                           SkRegion::Op op = SkRegion::kIntersect_Op,
13467baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com                           bool doAntiAlias = false) SK_OVERRIDE;
13567baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com
136902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual bool clipRegion(const SkRegion& region, SkRegion::Op op) SK_OVERRIDE;
137902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
138902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual bool concat(const SkMatrix& matrix) SK_OVERRIDE;
139902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
140902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top,
141902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com                            const SkPaint*) SK_OVERRIDE;
142902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
1437112173c3c4cd1b1e7da8cdf971d71f01dd91299reed@google.com    virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src,
1447112173c3c4cd1b1e7da8cdf971d71f01dd91299reed@google.com                                  const SkRect& dst, const SkPaint*) SK_OVERRIDE;
145902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
146902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&,
147902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com                                  const SkPaint*) SK_OVERRIDE;
148902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
149902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center,
150902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com                                const SkRect& dst, const SkPaint*) SK_OVERRIDE;
151902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
152902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawData(const void*, size_t) SK_OVERRIDE;
153902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
15467baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com    virtual void drawOval(const SkRect& oval, const SkPaint&) SK_OVERRIDE;
15567baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com
156902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE;
157902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
158902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE;
159902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
160902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawPicture(SkPicture& picture) SK_OVERRIDE;
161902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
162902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawPoints(PointMode, size_t count, const SkPoint pts[],
163902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com                            const SkPaint&) SK_OVERRIDE;
164902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
165902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawPosText(const void* text, size_t byteLength,
166902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com                             const SkPoint pos[], const SkPaint&) SK_OVERRIDE;
167902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
168902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawPosTextH(const void* text, size_t byteLength,
169422188f3c6286d2991a029027958387b070e4dc6skia.committer@gmail.com                              const SkScalar xpos[], SkScalar constY,
17067baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com                              const SkPaint&) SK_OVERRIDE;
171902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
172902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawRect(const SkRect& rect, const SkPaint&) SK_OVERRIDE;
173902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
17467baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com    virtual void drawRRect(const SkRRect& rrect, const SkPaint& paint) SK_OVERRIDE;
17567baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com
176902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawSprite(const SkBitmap&, int left, int top,
177902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com                            const SkPaint*) SK_OVERRIDE;
178902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
179902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawText(const void* text, size_t byteLength, SkScalar x,
180902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com                          SkScalar y, const SkPaint&) SK_OVERRIDE;
181902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
182902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawTextOnPath(const void* text, size_t byteLength,
18367baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com                                const SkPath& path, const SkMatrix* matrix,
184902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com                                const SkPaint&) SK_OVERRIDE;
185902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
186902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void drawVertices(VertexMode, int vertexCount,
18767baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com                              const SkPoint vertices[], const SkPoint texs[],
18867baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com                              const SkColor colors[], SkXfermode*,
18967baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com                              const uint16_t indices[], int indexCount,
190902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com                              const SkPaint&) SK_OVERRIDE;
191902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
192902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void restore() SK_OVERRIDE;
193902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
194902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual bool rotate(SkScalar degrees) SK_OVERRIDE;
195902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
196902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual int save(SaveFlags) SK_OVERRIDE;
197902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
198902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual int saveLayer(const SkRect* bounds, const SkPaint*, SaveFlags) SK_OVERRIDE;
199902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
200902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual bool scale(SkScalar sx, SkScalar sy) SK_OVERRIDE;
201902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
202902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual void setMatrix(const SkMatrix& matrix) SK_OVERRIDE;
203902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
204902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual bool skew(SkScalar sx, SkScalar sy) SK_OVERRIDE;
205902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
206902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    virtual bool translate(SkScalar dx, SkScalar dy) SK_OVERRIDE;
207902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
2083b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com    static const int kVizImageHeight = 256;
2093b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com    static const int kVizImageWidth = 256;
2103b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com
211902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate:
21267baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com    SkTDArray<SkDrawCommand*> fCommandVector;
213b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com    int fHeight;
214b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com    int fWidth;
215902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    SkBitmap fBm;
2167e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com    bool fFilter;
217830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com    int fIndex;
218e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com    SkMatrix fUserMatrix;
219a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com    SkMatrix fMatrix;
220a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com    SkIRect fClip;
221f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com    bool fOverdrawViz;
222f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com    SkDrawFilter* fOverdrawFilter;
223902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
224902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    /**
2250699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com        Number of unmatched save() calls at any point during a draw.
2260699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com        If there are any saveLayer() calls outstanding, we need to resolve
2270699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com        all of them, which in practice means resolving all save() calls,
2280699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com        to avoid corruption of our canvas.
2290699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com    */
2300699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com    int fOutstandingSaveCount;
2310699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com
2320699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com    /**
233902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        Adds the command to the classes vector of commands.
234902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com        @param command  The draw command for execution
235902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com     */
236902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com    void addDrawCommand(SkDrawCommand* command);
237830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com
238830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com    /**
239830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com        Applies any panning and zooming the user has specified before
240830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com        drawing anything else into the canvas.
241830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com     */
242830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com    void applyUserTransform(SkCanvas* canvas);
2433b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com
2443b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com    typedef SkCanvas INHERITED;
245902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com};
246902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com
247902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#endif
248