SkDebugCanvas.h revision 370a89980b2d38a6d01903b484bf404d6c48b496
11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert/* 31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Copyright 2012 Google Inc. 41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * 51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Use of this source code is governed by a BSD-style license that can be 61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * found in the LICENSE file. 71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert#ifndef SKDEBUGCANVAS_H_ 111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert#define SKDEBUGCANVAS_H_ 121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert#include "SkCanvas.h" 141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert#include "SkDrawCommand.h" 151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert#include "SkPicture.h" 161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert#include "SkTArray.h" 171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert#include "SkString.h" 181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertclass SkTexOverrideFilter; 201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertclass SK_API SkDebugCanvas : public SkCanvas { 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertpublic: 231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkDebugCanvas(int width, int height); 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual ~SkDebugCanvas(); 251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void toggleFilter(bool toggle); 271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 29cc4666fc64939f1a9a56a0cb5eb8a237942c5243Jeff Hamilton * Enable or disable overdraw visualization 301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void setOverdrawViz(bool overdrawViz) { fOverdrawViz = overdrawViz; } 321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Enable or disable texure filtering override 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void overrideTexFiltering(bool overrideTexFiltering, SkPaint::FilterLevel level); 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Executes all draw calls to the canvas. 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @param canvas The canvas being drawn to 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void draw(SkCanvas* canvas); 43cc4666fc64939f1a9a56a0cb5eb8a237942c5243Jeff Hamilton 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Executes the draw calls up to the specified index. 461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @param canvas The canvas being drawn to 471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @param index The index of the final command being executed 481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void drawTo(SkCanvas* canvas, int index); 501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Returns the most recently calculated transformation matrix 531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkMatrix& getCurrentMatrix() { 551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return fMatrix; 561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Returns the most recently calculated clip 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkIRect& getCurrentClip() { 621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return fClip; 631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Returns the index of the last draw command to write to the pixel at (x,y) 671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert int getCommandAtPoint(int x, int y, int index); 691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Removes the command at the specified index 721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @param index The index of the command to delete 731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void deleteDrawCommandAt(int index); 751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Returns the draw command at the given index. 781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @param index The index of the command 791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkDrawCommand* getDrawCommandAt(int index); 811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Sets the draw command for a given index. 841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @param index The index to overwrite 851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @param command The new command 861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void setDrawCommandAt(int index, SkDrawCommand* command); 881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Returns information about the command at the given index. 911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @param index The index of the command 921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkTDArray<SkString*>* getCommandInfo(int index); 941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Returns the visibility of the command at the given index. 971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @param index The index of the command 981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert bool getDrawCommandVisibilityAt(int index); 1001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Returns the vector of draw commands 1031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SK_ATTR_DEPRECATED("please use getDrawCommandAt and getSize instead") 1051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkTDArray<SkDrawCommand*>& getDrawCommands() const; 1061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Returns the vector of draw commands. Do not use this entry 1091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert point - it is going away! 1101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkTDArray<SkDrawCommand*>& getDrawCommands(); 1121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert * Returns the string vector of draw commands 1151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkTArray<SkString>* getDrawCommandsAsStrings() const; 1171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Returns length of draw command vector. 1201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert int getSize() const { 1221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return fCommandVector.count(); 1231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 1261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Toggles the visibility / execution of the draw command at index i with 1271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert the value of toggle. 1281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 1291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void toggleCommand(int index, bool toggle); 1301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void setBounds(int width, int height) { 1321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fWidth = width; 1331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fHeight = height; 1341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void setUserMatrix(SkMatrix matrix) { 1371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert fUserMatrix = matrix; 1381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 1391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert//////////////////////////////////////////////////////////////////////////////// 1411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert// Inherited from SkCanvas 1421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert//////////////////////////////////////////////////////////////////////////////// 1431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void clear(SkColor) SK_OVERRIDE; 1451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual bool concat(const SkMatrix& matrix) SK_OVERRIDE; 1471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top, 1491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkPaint*) SK_OVERRIDE; 1501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src, 1521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkRect& dst, const SkPaint* paint, 1531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert DrawBitmapRectFlags flags) SK_OVERRIDE; 1541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawBitmapMatrix(const SkBitmap&, const SkMatrix&, 1561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkPaint*) SK_OVERRIDE; 1571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, 1591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkRect& dst, const SkPaint*) SK_OVERRIDE; 1601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawData(const void*, size_t) SK_OVERRIDE; 1621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void beginCommentGroup(const char* description) SK_OVERRIDE; 1641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void addComment(const char* kywd, const char* value) SK_OVERRIDE; 1661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void endCommentGroup() SK_OVERRIDE; 1681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawOval(const SkRect& oval, const SkPaint&) SK_OVERRIDE; 1701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE; 1721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE; 1741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawPicture(SkPicture& picture) SK_OVERRIDE; 1761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawPoints(PointMode, size_t count, const SkPoint pts[], 1781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkPaint&) SK_OVERRIDE; 1791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawPosText(const void* text, size_t byteLength, 1811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkPoint pos[], const SkPaint&) SK_OVERRIDE; 1821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawPosTextH(const void* text, size_t byteLength, 1841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkScalar xpos[], SkScalar constY, 1851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkPaint&) SK_OVERRIDE; 1861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawRect(const SkRect& rect, const SkPaint&) SK_OVERRIDE; 1881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawRRect(const SkRRect& rrect, const SkPaint& paint) SK_OVERRIDE; 1901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawSprite(const SkBitmap&, int left, int top, 1921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkPaint*) SK_OVERRIDE; 1931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawText(const void* text, size_t byteLength, SkScalar x, 1951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkScalar y, const SkPaint&) SK_OVERRIDE; 1961d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 1971d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawTextOnPath(const void* text, size_t byteLength, 1981d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkPath& path, const SkMatrix* matrix, 1991d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkPaint&) SK_OVERRIDE; 2001d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2011d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void drawVertices(VertexMode, int vertexCount, 2021d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkPoint vertices[], const SkPoint texs[], 2031d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkColor colors[], SkXfermode*, 2041d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const uint16_t indices[], int indexCount, 2051d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert const SkPaint&) SK_OVERRIDE; 2061d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2071d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void restore() SK_OVERRIDE; 2081d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2091d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual bool rotate(SkScalar degrees) SK_OVERRIDE; 2101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual int save(SaveFlags) SK_OVERRIDE; 2121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual int saveLayer(const SkRect* bounds, const SkPaint*, SaveFlags) SK_OVERRIDE; 2141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual bool scale(SkScalar sx, SkScalar sy) SK_OVERRIDE; 2161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void setMatrix(const SkMatrix& matrix) SK_OVERRIDE; 2181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual bool skew(SkScalar sx, SkScalar sy) SK_OVERRIDE; 2201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual bool translate(SkScalar dx, SkScalar dy) SK_OVERRIDE; 2221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert static const int kVizImageHeight = 256; 2241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert static const int kVizImageWidth = 256; 2251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual bool isClipEmpty() const SK_OVERRIDE { return false; } 2271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual ClipType getClipType() const SK_OVERRIDE { 2281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return kRect_ClipType; 2291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual bool getClipBounds(SkRect* bounds) const SK_OVERRIDE { 2311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (NULL != bounds) { 2321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert bounds->setXYWH(0, 0, 2331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkIntToScalar(this->imageInfo().fWidth), 2341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkIntToScalar(this->imageInfo().fHeight)); 2351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return true; 2371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual bool getClipDeviceBounds(SkIRect* bounds) const SK_OVERRIDE { 2391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (NULL != bounds) { 2401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert bounds->setLargest(); 2411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert return true; 2431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert } 2441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertprotected: 2461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) SK_OVERRIDE; 2471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void onPushCull(const SkRect& cullRect) SK_OVERRIDE; 2481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void onPopCull() SK_OVERRIDE; 2491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; 2511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; 2521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; 2531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert virtual void onClipRegion(const SkRegion& region, SkRegion::Op) SK_OVERRIDE; 2541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertprivate: 2561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkTDArray<SkDrawCommand*> fCommandVector; 2571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert int fWidth; 2581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert int fHeight; 2591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert bool fFilter; 2601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert int fIndex; 2611d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkMatrix fUserMatrix; 2621d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkMatrix fMatrix; 2631d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkIRect fClip; 2641d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2651d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert bool fOverdrawViz; 2661d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkDrawFilter* fOverdrawFilter; 2671d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2681d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert bool fOverrideTexFiltering; 2691d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert SkTexOverrideFilter* fTexOverrideFilter; 2701d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2711d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2721d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Number of unmatched save() calls at any point during a draw. 2731d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert If there are any saveLayer() calls outstanding, we need to resolve 2741d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert all of them, which in practice means resolving all save() calls, 2751d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert to avoid corruption of our canvas. 2761d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2771d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert int fOutstandingSaveCount; 2781d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2791d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2801d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Adds the command to the classes vector of commands. 2811d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert @param command The draw command for execution 2821d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2831d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void addDrawCommand(SkDrawCommand* command); 2841d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2851d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert /** 2861d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert Applies any panning and zooming the user has specified before 2871d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert drawing anything else into the canvas. 2881d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert */ 2891d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert void applyUserTransform(SkCanvas* canvas); 2901d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2911d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert typedef SkCanvas INHERITED; 2921d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert}; 2931d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 2941d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert#endif 2951d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert