1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2012 Google Inc. 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#ifndef SKDEBUGGER_H_ 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#define SKDEBUGGER_H_ 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkDebugCanvas.h" 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPicture.h" 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkTArray.h" 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass SkString; 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotclass SkDebugger { 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotpublic: 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkDebugger(); 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot ~SkDebugger(); 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setIndex(int index) { 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fIndex = index; 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void draw(SkCanvas* canvas) { 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (fIndex >= 0) { 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fDebugCanvas->drawTo(canvas, fIndex); 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void step(); 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void stepBack(); 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void play(); 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void rewind(); 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot bool isCommandVisible(int index) { 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fDebugCanvas->getDrawCommandVisibilityAt(index); 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setCommandVisible(int index, bool isVisible) { 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fDebugCanvas->toggleCommand(index, isVisible); 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkDrawCommand* getDrawCommandAt(int index) { 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fDebugCanvas->getDrawCommandAt(index); 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkTDArray<SkDrawCommand*>& getDrawCommands() const { 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fDebugCanvas->getDrawCommands(); 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void highlightCurrentCommand(bool on) { 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fDebugCanvas->toggleFilter(on); 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void loadPicture(SkPicture* picture); 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot sk_sp<SkPicture> copyPicture(); 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int getSize() const { 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fDebugCanvas->getSize(); 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setUserMatrix(SkMatrix userMatrix) { 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot // Should this live in debugger instead? 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fDebugCanvas->setUserMatrix(userMatrix); 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int getCommandAtPoint(int x, int y, int index) { 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fDebugCanvas->getCommandAtPoint(x, y, index); 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkTDArray<SkString*>* getCommandInfo(int index) const { 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fDebugCanvas->getCommandInfo(index); 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 79fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 80fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkMatrix& getCurrentMatrix() { 81fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fDebugCanvas->getCurrentMatrix(); 82fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 83fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 84fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot const SkIRect& getCurrentClip() { 85fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fDebugCanvas->getCurrentClip(); 86fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 87fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 88fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkRect pictureCull() const { 89fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fPicture ? fPicture->cullRect() : SkRect::MakeEmpty(); 90fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 91fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 92fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int index() { 93fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return fIndex; 94fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 95fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 96fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setOverdrawViz(bool overDrawViz) { 97fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (fDebugCanvas) { 98fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fDebugCanvas->setOverdrawViz(overDrawViz); 99fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 100fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 101fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 102fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setPathOps(bool pathOps) { 103fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (fDebugCanvas) { 104fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fDebugCanvas->setAllowSimplifyClip(pathOps); 105fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 106fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 107fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 108fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setMegaViz(bool megaViz) { 109fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (fDebugCanvas) { 110fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fDebugCanvas->setMegaVizMode(megaViz); 111fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 112fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 113fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 114fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void setTexFilterOverride(bool texFilterOverride, SkFilterQuality quality) { 115fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (fDebugCanvas) { 116fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot fDebugCanvas->overrideTexFiltering(texFilterOverride, quality); 117fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 118fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 119fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 120fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void getOverviewText(const SkTDArray<double>* typeTimes, double totTime, 121fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot SkString* overview, int numRuns); 122fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 123fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot void getClipStackText(SkString* clipStack); 124fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 125fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotprivate: 126fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot std::unique_ptr<SkDebugCanvas> fDebugCanvas; 127fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot sk_sp<SkPicture> fPicture; 128fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 129fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot int fIndex; 130fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot}; 131fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 132fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 133fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#endif /* SKDEBUGGER_H_ */ 134