SkDebugCanvas.h revision 4469938e92d779dff05e745559e67907bbf21e78
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 1932bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.comclass SkTexOverrideFilter; 2032bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com 2186681b37bd20204e47a492119b345c01d00bc939fmalita@google.comclass SK_API SkDebugCanvas : public SkCanvas { 22902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 2380a4a60f96c33ccd850f9b0eb4b69ab08c198196chudy@google.com SkDebugCanvas(int width, int height); 24f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com virtual ~SkDebugCanvas(); 25902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 26902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com void toggleFilter(bool toggle); 27902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 28902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 29f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com * Enable or disable overdraw visualization 30f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com */ 31f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com void setOverdrawViz(bool overdrawViz) { fOverdrawViz = overdrawViz; } 32f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com 33f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com /** 3432bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com * Enable or disable texure filtering override 3532bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com */ 36f84ad8f7fc0194389a8099da2c5e8fff9f092890skia.committer@gmail.com void overrideTexFiltering(bool overrideTexFiltering, SkPaint::FilterLevel level); 3732bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com 3832bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com /** 39902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Executes all draw calls to the canvas. 40902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param canvas The canvas being drawn to 41902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 42902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com void draw(SkCanvas* canvas); 43902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 44902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 45902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Executes the draw calls in the specified range. 46902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param canvas The canvas being drawn to 47902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param i The beginning of the range 48902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param j The end of the range 49902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com TODO(chudy): Implement 50902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 51902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com void drawRange(SkCanvas* canvas, int i, int j); 52902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 53902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 54902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Executes the draw calls up to the specified index. 55902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param canvas The canvas being drawn to 56902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param index The index of the final command being executed 57902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 580b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com void drawTo(SkCanvas* canvas, int index); 590b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com 600b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com /** 61a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com Returns the most recently calculated transformation matrix 62a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com */ 63a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com const SkMatrix& getCurrentMatrix() { 64a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com return fMatrix; 65a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com } 66a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com 67a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com /** 68a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com Returns the most recently calculated clip 69a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com */ 70a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com const SkIRect& getCurrentClip() { 71a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com return fClip; 72a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com } 73a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com 74a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com /** 750b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com Returns the index of the last draw command to write to the pixel at (x,y) 760b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com */ 77830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com int getCommandAtPoint(int x, int y, int index); 78902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 79902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 8050c84da68b17647371a81593402e897d639989e4robertphillips@google.com Removes the command at the specified index 8150c84da68b17647371a81593402e897d639989e4robertphillips@google.com @param index The index of the command to delete 8250c84da68b17647371a81593402e897d639989e4robertphillips@google.com */ 8350c84da68b17647371a81593402e897d639989e4robertphillips@google.com void deleteDrawCommandAt(int index); 8450c84da68b17647371a81593402e897d639989e4robertphillips@google.com 8550c84da68b17647371a81593402e897d639989e4robertphillips@google.com /** 86902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Returns the draw command at the given index. 87902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param index The index of the command 88902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 89902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkDrawCommand* getDrawCommandAt(int index); 90902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 91902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 9250c84da68b17647371a81593402e897d639989e4robertphillips@google.com Sets the draw command for a given index. 9350c84da68b17647371a81593402e897d639989e4robertphillips@google.com @param index The index to overwrite 9450c84da68b17647371a81593402e897d639989e4robertphillips@google.com @param command The new command 9550c84da68b17647371a81593402e897d639989e4robertphillips@google.com */ 9650c84da68b17647371a81593402e897d639989e4robertphillips@google.com void setDrawCommandAt(int index, SkDrawCommand* command); 9750c84da68b17647371a81593402e897d639989e4robertphillips@google.com 9850c84da68b17647371a81593402e897d639989e4robertphillips@google.com /** 99902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Returns information about the command at the given index. 100902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param index The index of the command 101902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 10297cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com SkTDArray<SkString*>* getCommandInfo(int index); 103902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 104902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 1057e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com Returns the visibility of the command at the given index. 1067e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com @param index The index of the command 1077e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com */ 1087e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com bool getDrawCommandVisibilityAt(int index); 1097e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com 1107e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com /** 111902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Returns the vector of draw commands 112902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 1134469938e92d779dff05e745559e67907bbf21e78reed@google.com SK_ATTR_DEPRECATED("please use getDrawCommandAt and getSize instead") 1148a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com const SkTDArray<SkDrawCommand*>& getDrawCommands() const; 1152e71f1619d9a2c51c1292e618f42a56ad2da1de8skia.committer@gmail.com 116febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com /** 117febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com Returns the vector of draw commands. Do not use this entry 118febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com point - it is going away! 119febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com */ 120febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com SkTDArray<SkDrawCommand*>& getDrawCommands(); 121902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 122902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 123902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com * Returns the string vector of draw commands 124902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 1258a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com SkTArray<SkString>* getDrawCommandsAsStrings() const; 126902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 127902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 128f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com Returns length of draw command vector. 129f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com */ 1300d4fe14a41bd04535310f8b2edee9e30191fdd79commit-bot@chromium.org int getSize() const { 13167baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com return fCommandVector.count(); 132f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com } 133f14143226acf209615c4dd841aa6632aff112ab3chudy@google.com 134902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 135902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Toggles the visibility / execution of the draw command at index i with 136902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com the value of toggle. 137902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 138902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com void toggleCommand(int index, bool toggle); 139902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 140b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com void setBounds(int width, int height) { 141b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com fWidth = width; 142b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com fHeight = height; 143b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com } 144b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com 145e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com void setUserMatrix(SkMatrix matrix) { 146e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com fUserMatrix = matrix; 147830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com } 148830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com 149902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com//////////////////////////////////////////////////////////////////////////////// 150902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com// Inherited from SkCanvas 151902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com//////////////////////////////////////////////////////////////////////////////// 152902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 153902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void clear(SkColor) SK_OVERRIDE; 154902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 155902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual bool clipPath(const SkPath&, SkRegion::Op, bool) SK_OVERRIDE; 156902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 157902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual bool clipRect(const SkRect&, SkRegion::Op, bool) SK_OVERRIDE; 158902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 15967baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com virtual bool clipRRect(const SkRRect& rrect, 16067baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com SkRegion::Op op = SkRegion::kIntersect_Op, 16167baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com bool doAntiAlias = false) SK_OVERRIDE; 16267baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 163902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual bool clipRegion(const SkRegion& region, SkRegion::Op op) SK_OVERRIDE; 164902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 165902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual bool concat(const SkMatrix& matrix) SK_OVERRIDE; 166902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 167902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top, 168902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com const SkPaint*) SK_OVERRIDE; 169902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1707112173c3c4cd1b1e7da8cdf971d71f01dd91299reed@google.com virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src, 171eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org const SkRect& dst, const SkPaint* paint, 172eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org DrawBitmapRectFlags flags) SK_OVERRIDE; 173902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 174902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&, 175902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com const SkPaint*) SK_OVERRIDE; 176902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 177902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, 178902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com const SkRect& dst, const SkPaint*) SK_OVERRIDE; 179902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 180902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawData(const void*, size_t) SK_OVERRIDE; 181902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1820a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com virtual void beginCommentGroup(const char* description) SK_OVERRIDE; 1830a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 1840a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com virtual void addComment(const char* kywd, const char* value) SK_OVERRIDE; 1850a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 1860a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com virtual void endCommentGroup() SK_OVERRIDE; 1870a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 18867baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com virtual void drawOval(const SkRect& oval, const SkPaint&) SK_OVERRIDE; 18967baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 190902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE; 191902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1927ce564cccb246ec56427085872b2e1458fe74bd1bsalomon@google.com virtual void drawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE; 1937ce564cccb246ec56427085872b2e1458fe74bd1bsalomon@google.com 194902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawPicture(SkPicture& picture) SK_OVERRIDE; 195902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 196902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawPoints(PointMode, size_t count, const SkPoint pts[], 197902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com const SkPaint&) SK_OVERRIDE; 198902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 199902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawPosText(const void* text, size_t byteLength, 200902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com const SkPoint pos[], const SkPaint&) SK_OVERRIDE; 201902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 202902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawPosTextH(const void* text, size_t byteLength, 203422188f3c6286d2991a029027958387b070e4dc6skia.committer@gmail.com const SkScalar xpos[], SkScalar constY, 20467baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com const SkPaint&) SK_OVERRIDE; 205902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2067ce564cccb246ec56427085872b2e1458fe74bd1bsalomon@google.com virtual void drawRect(const SkRect& rect, const SkPaint&) SK_OVERRIDE; 2077ce564cccb246ec56427085872b2e1458fe74bd1bsalomon@google.com 20867baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com virtual void drawRRect(const SkRRect& rrect, const SkPaint& paint) SK_OVERRIDE; 20967baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 210902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawSprite(const SkBitmap&, int left, int top, 211902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com const SkPaint*) SK_OVERRIDE; 212902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 213902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawText(const void* text, size_t byteLength, SkScalar x, 214902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkScalar y, const SkPaint&) SK_OVERRIDE; 215902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 216902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawTextOnPath(const void* text, size_t byteLength, 21767baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com const SkPath& path, const SkMatrix* matrix, 218902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com const SkPaint&) SK_OVERRIDE; 219902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 220902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void drawVertices(VertexMode, int vertexCount, 22167baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com const SkPoint vertices[], const SkPoint texs[], 22267baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com const SkColor colors[], SkXfermode*, 22367baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com const uint16_t indices[], int indexCount, 224902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com const SkPaint&) SK_OVERRIDE; 225902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 226902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void restore() SK_OVERRIDE; 227902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 228902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual bool rotate(SkScalar degrees) SK_OVERRIDE; 229902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 230902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual int save(SaveFlags) SK_OVERRIDE; 231902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 232902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual int saveLayer(const SkRect* bounds, const SkPaint*, SaveFlags) SK_OVERRIDE; 233902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 234902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual bool scale(SkScalar sx, SkScalar sy) SK_OVERRIDE; 235902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 236902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual void setMatrix(const SkMatrix& matrix) SK_OVERRIDE; 237902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 238902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual bool skew(SkScalar sx, SkScalar sy) SK_OVERRIDE; 239902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 240902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual bool translate(SkScalar dx, SkScalar dy) SK_OVERRIDE; 241902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2423b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com static const int kVizImageHeight = 256; 2433b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com static const int kVizImageWidth = 256; 2443b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com 245902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 24667baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com SkTDArray<SkDrawCommand*> fCommandVector; 247b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com int fHeight; 248b9ddd4e9f184f4a4545eca69c55ec1ad1ce59170chudy@google.com int fWidth; 249902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkBitmap fBm; 2507e4cfbf144af7d530d552946cee2a21d30b9b50fchudy@google.com bool fFilter; 251830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com int fIndex; 252e8cc6e8071935339a06548b13a0668b56a7540f5bungeman@google.com SkMatrix fUserMatrix; 253a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com SkMatrix fMatrix; 254a9e937c7b712b024de108fa963f92d0e70e4a296chudy@google.com SkIRect fClip; 25532bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com 256f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com bool fOverdrawViz; 257f4741c1322944e194ca34a8f5cf8188fe2c0efe2robertphillips@google.com SkDrawFilter* fOverdrawFilter; 258902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 25932bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com bool fOverrideTexFiltering; 26032bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com SkTexOverrideFilter* fTexOverrideFilter; 26132bbcf828d66ad244fa25b468bc3a229e531491frobertphillips@google.com 262902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com /** 2630699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com Number of unmatched save() calls at any point during a draw. 2640699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com If there are any saveLayer() calls outstanding, we need to resolve 2650699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com all of them, which in practice means resolving all save() calls, 2660699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com to avoid corruption of our canvas. 2670699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com */ 2680699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com int fOutstandingSaveCount; 2690699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com 2700699e02101405623ad47f225729ed2521b2a0501tomhudson@google.com /** 271902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com Adds the command to the classes vector of commands. 272902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com @param command The draw command for execution 273902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com */ 274902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com void addDrawCommand(SkDrawCommand* command); 275830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com 276830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com /** 277830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com Applies any panning and zooming the user has specified before 278830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com drawing anything else into the canvas. 279830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com */ 280830b8793bb1646bb76817bdc228dd8e2a92bef7dchudy@google.com void applyUserTransform(SkCanvas* canvas); 2813b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com 2823b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com typedef SkCanvas INHERITED; 283902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 284902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 285902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#endif 286