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#ifndef SKDRAWCOMMAND_H_ 10902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#define SKDRAWCOMMAND_H_ 11902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 12902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#include "SkCanvas.h" 130a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com#include "SkString.h" 14902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1586681b37bd20204e47a492119b345c01d00bc939fmalita@google.comclass SK_API SkDrawCommand { 16902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 179bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips enum OpType { 189bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kBeginCommentGroup_OpType, 19160ebb2bfa0794d72d31a786793b13413289863dfmalita kBeginDrawPicture_OpType, 209bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kClipPath_OpType, 219bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kClipRegion_OpType, 229bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kClipRect_OpType, 239bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kClipRRect_OpType, 249bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kComment_OpType, 259bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kConcat_OpType, 269bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawBitmap_OpType, 279bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawBitmapNine_OpType, 289bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawBitmapRect_OpType, 299bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawClear_OpType, 309bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawDRRect_OpType, 319bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawOval_OpType, 329bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawPaint_OpType, 339bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawPatch_OpType, 349bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawPath_OpType, 359bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawPoints_OpType, 369bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawPosText_OpType, 379bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawPosTextH_OpType, 389bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawRect_OpType, 399bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawRRect_OpType, 409bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawSprite_OpType, 419bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawText_OpType, 429bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawTextBlob_OpType, 439bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawTextOnPath_OpType, 449bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kDrawVertices_OpType, 459bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kEndCommentGroup_OpType, 46160ebb2bfa0794d72d31a786793b13413289863dfmalita kEndDrawPicture_OpType, 479bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kRestore_OpType, 489bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kSave_OpType, 499bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kSaveLayer_OpType, 509bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kSetMatrix_OpType, 519bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips 529bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips kLast_OpType = kSetMatrix_OpType 539bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips }; 549bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips 559bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips static const int kOpTypeCount = kLast_OpType + 1; 5672942b8eb56f17e9303380d4e8492f66e9330578robertphillips 579bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips SkDrawCommand(OpType opType); 58902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 59902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com virtual ~SkDrawCommand(); 60902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 618c89c528f31dff25bce74aabe28abe23a772cb1efmalita virtual SkString toString() const; 62902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 638c89c528f31dff25bce74aabe28abe23a772cb1efmalita virtual const char* toCString() const { 649bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips return GetCommandString(fOpType); 65902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com } 66902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 670b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com bool isVisible() const { 680b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com return fVisible; 690b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com } 700b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com 710b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com void setVisible(bool toggle) { 720b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com fVisible = toggle; 730b5bbb0f82e022c8acfbcb6312f0ed18e1ab90cechudy@google.com } 74902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 758c89c528f31dff25bce74aabe28abe23a772cb1efmalita const SkTDArray<SkString*>* Info() const { return &fInfo; } 768c89c528f31dff25bce74aabe28abe23a772cb1efmalita virtual void execute(SkCanvas*) const = 0; 778c89c528f31dff25bce74aabe28abe23a772cb1efmalita virtual void vizExecute(SkCanvas*) const {} 7870171683e6977af7472f0f465bd81852d0644dddrobertphillips 798c89c528f31dff25bce74aabe28abe23a772cb1efmalita virtual void setUserMatrix(const SkMatrix&) {} 8070171683e6977af7472f0f465bd81852d0644dddrobertphillips 81f0f14113431ace669f278fdd97b50950f2cf4c80mtklein // The next "active" system is only used by save, saveLayer, and restore. 82f0f14113431ace669f278fdd97b50950f2cf4c80mtklein // It is used to determine which saveLayers are currently active (at a 83768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org // given point in the rendering). 8457f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org // saves just return a kPushLayer action but don't track active state 8557f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org // restores just return a kPopLayer action 861643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org // saveLayers return kPushLayer but also track the active state 87768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org enum Action { 88768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org kNone_Action, 891643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org kPopLayer_Action, 901643b2c9bc5adb4324bb459bb7811f58bc7c2d62commit-bot@chromium.org kPushLayer_Action, 91768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org }; 92768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org virtual Action action() const { return kNone_Action; } 93768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org virtual void setActive(bool active) {} 94768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org virtual bool active() const { return false; } 95768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org 969bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips OpType getType() const { return fOpType; } 97902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 986ede1fe62bbb4e98f4eff4e4afb1d20e1e070423robertphillips@google.com virtual bool render(SkCanvas* canvas) const { return false; } 996dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 1009bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips static const char* GetCommandString(OpType type); 1018a1cdaece7e1d009befb84f21bb82370025bf4d6robertphillips@google.com 102902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprotected: 10397cee9735350cb472249ce1a827ba1aa6b2a5f59chudy@google.com SkTDArray<SkString*> fInfo; 104902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 105902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 1069bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips OpType fOpType; 10757f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org bool fVisible; 108902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 109902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1107a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkRestoreCommand : public SkDrawCommand { 111902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 1127a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkRestoreCommand(); 11336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 11436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein Action action() const override { return kPopLayer_Action; } 11524bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com 11624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.comprivate: 11724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com typedef SkDrawCommand INHERITED; 118902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 119902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1207a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkClearCommand : public SkDrawCommand { 121902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 1227a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkClearCommand(SkColor color); 12336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 124902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 125902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkColor fColor; 12624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com 12724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com typedef SkDrawCommand INHERITED; 128902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 129902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1307a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkClipPathCommand : public SkDrawCommand { 131902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 1327a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool doAA); 13336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 13436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 135902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 13624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkPath fPath; 137902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkRegion::Op fOp; 13824bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com bool fDoAA; 13991217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com 14091217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com typedef SkDrawCommand INHERITED; 141902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 142902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1437a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkClipRegionCommand : public SkDrawCommand { 144902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 1457a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkClipRegionCommand(const SkRegion& region, SkRegion::Op op); 14636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 147902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 14824bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkRegion fRegion; 149902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkRegion::Op fOp; 15024bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com 15124bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com typedef SkDrawCommand INHERITED; 152902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 153902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1547a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkClipRectCommand : public SkDrawCommand { 155902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 1567a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool doAA); 15736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 158febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com 159a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com const SkRect& rect() const { return fRect; } 160febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com SkRegion::Op op() const { return fOp; } 161febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com bool doAA() const { return fDoAA; } 162febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com 163902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 164a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com SkRect fRect; 165902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkRegion::Op fOp; 166a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com bool fDoAA; 167a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 168a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com typedef SkDrawCommand INHERITED; 169902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 170902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1717a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkClipRRectCommand : public SkDrawCommand { 17267baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.compublic: 1737a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bool doAA); 17436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 17536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 176febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com 177febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com const SkRRect& rrect() const { return fRRect; } 178febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com SkRegion::Op op() const { return fOp; } 179febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com bool doAA() const { return fDoAA; } 180febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com 18167baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.comprivate: 182a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com SkRRect fRRect; 18367baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com SkRegion::Op fOp; 184a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com bool fDoAA; 185a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 186a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com typedef SkDrawCommand INHERITED; 18767baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com}; 18867baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 1897a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkConcatCommand : public SkDrawCommand { 190902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 1917a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkConcatCommand(const SkMatrix& matrix); 19236352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 193902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 19424bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkMatrix fMatrix; 19524bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com 19624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com typedef SkDrawCommand INHERITED; 197902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 198902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 1997a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawBitmapCommand : public SkDrawCommand { 200902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 2017a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top, 20257f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkPaint* paint); 20336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 20436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 205902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 20624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkBitmap fBitmap; 207902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkScalar fLeft; 208902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkScalar fTop; 20924bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkPaint fPaint; 21024bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkPaint* fPaintPtr; 21124bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com 21224bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com typedef SkDrawCommand INHERITED; 213902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 214902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2157a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawBitmapNineCommand : public SkDrawCommand { 216902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 2177a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawBitmapNineCommand(const SkBitmap& bitmap, const SkIRect& center, 21857f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkRect& dst, const SkPaint* paint); 21936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 22036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 221902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 22224bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkBitmap fBitmap; 22324bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkIRect fCenter; 22424bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkRect fDst; 22524bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkPaint fPaint; 22624bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkPaint* fPaintPtr; 22724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com 22824bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com typedef SkDrawCommand INHERITED; 229902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 230902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2317a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawBitmapRectCommand : public SkDrawCommand { 232902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 2337a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawBitmapRectCommand(const SkBitmap& bitmap, const SkRect* src, 234eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org const SkRect& dst, const SkPaint* paint, 235eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org SkCanvas::DrawBitmapRectFlags flags); 23636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 23736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 2383b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com 239c3410b8cbbf63ac7968262c25c996bdbaab20588robertphillips@google.com const SkBitmap& bitmap() const { return fBitmap; } 240c3410b8cbbf63ac7968262c25c996bdbaab20588robertphillips@google.com 2413b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com // The non-const 'paint' method allows modification of this object's 2423b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com // SkPaint. For this reason the ctor and setPaint method make a local copy. 2433b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com // The 'fPaintPtr' member acts a signal that the local SkPaint is valid 2443b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com // (since only an SkPaint* is passed into the ctor). 2453b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com const SkPaint* paint() const { return fPaintPtr; } 2463b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com SkPaint* paint() { return fPaintPtr; } 2473b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com 2483b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com void setPaint(const SkPaint& paint) { fPaint = paint; fPaintPtr = &fPaint; } 2493b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com 25091217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com const SkRect* srcRect() const { return fSrc.isEmpty() ? NULL : &fSrc; } 251c3410b8cbbf63ac7968262c25c996bdbaab20588robertphillips@google.com void setSrcRect(const SkRect& src) { fSrc = src; } 252eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org 253eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org const SkRect& dstRect() const { return fDst; } 254c3410b8cbbf63ac7968262c25c996bdbaab20588robertphillips@google.com void setDstRect(const SkRect& dst) { fDst = dst; } 255c3410b8cbbf63ac7968262c25c996bdbaab20588robertphillips@google.com 256eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org SkCanvas::DrawBitmapRectFlags flags() const { return fFlags; } 257eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org void setFlags(SkCanvas::DrawBitmapRectFlags flags) { fFlags = flags; } 258eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org 259902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 260eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org SkBitmap fBitmap; 261eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org SkRect fSrc; 262eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org SkRect fDst; 263eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org SkPaint fPaint; 264eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org SkPaint* fPaintPtr; 265eed779d866e1e239bfb9ebc6a225b7345a41adf9commit-bot@chromium.org SkCanvas::DrawBitmapRectFlags fFlags; 26691217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com 26791217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com typedef SkDrawCommand INHERITED; 268902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 269902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 2707a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkBeginCommentGroupCommand : public SkDrawCommand { 2710a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.compublic: 2727a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkBeginCommentGroupCommand(const char* description); 27336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override { 2740a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com canvas->beginCommentGroup(fDescription.c_str()); 2750a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com }; 2760a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.comprivate: 2770a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com SkString fDescription; 2780a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 2790a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com typedef SkDrawCommand INHERITED; 2800a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com}; 2810a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 2827a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkCommentCommand : public SkDrawCommand { 2830a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.compublic: 2847a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkCommentCommand(const char* kywd, const char* value); 28536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override { 2860a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com canvas->addComment(fKywd.c_str(), fValue.c_str()); 2870a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com }; 2880a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.comprivate: 2890a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com SkString fKywd; 2900a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com SkString fValue; 2910a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 2920a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com typedef SkDrawCommand INHERITED; 2930a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com}; 2940a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 2957a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkEndCommentGroupCommand : public SkDrawCommand { 2960a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.compublic: 2977a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkEndCommentGroupCommand(); 29836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override { 2990a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com canvas->endCommentGroup(); 3000a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com }; 3010a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.comprivate: 3020a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com typedef SkDrawCommand INHERITED; 3030a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com}; 3040a4805e33f8ddb445a2fd061462e715e1707f049robertphillips@google.com 3057a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawOvalCommand : public SkDrawCommand { 30667baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.compublic: 3077a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawOvalCommand(const SkRect& oval, const SkPaint& paint); 30836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 30936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 31067baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.comprivate: 311a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com SkRect fOval; 312a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com SkPaint fPaint; 313a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 314a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com typedef SkDrawCommand INHERITED; 31567baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com}; 31667baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 3177a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawPaintCommand : public SkDrawCommand { 318902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 3197a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawPaintCommand(const SkPaint& paint); 32036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 32136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 322902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 323a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com SkPaint fPaint; 324a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 325a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com typedef SkDrawCommand INHERITED; 326902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 327902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 3287a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawPathCommand : public SkDrawCommand { 329902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 3307a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawPathCommand(const SkPath& path, const SkPaint& paint); 33136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 33236352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 3336dec8fcb4427c68649aede96864cff7c71df6393robertphillips@google.com 334902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 3350df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPath fPath; 3360df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPaint fPaint; 33791217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com 33891217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com typedef SkDrawCommand INHERITED; 339902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 340902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 341160ebb2bfa0794d72d31a786793b13413289863dfmalitaclass SkBeginDrawPictureCommand : public SkDrawCommand { 342902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 343160ebb2bfa0794d72d31a786793b13413289863dfmalita SkBeginDrawPictureCommand(const SkPicture* picture, 344160ebb2bfa0794d72d31a786793b13413289863dfmalita const SkMatrix* matrix, 345160ebb2bfa0794d72d31a786793b13413289863dfmalita const SkPaint* paint); 346160ebb2bfa0794d72d31a786793b13413289863dfmalita 34736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 34836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 349e898e9c65eb2f10e53c459349b174551b3957545commit-bot@chromium.org 350902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 3519b14f26d0f3a974f3dd626c8354e1db1cfcd322frobertphillips SkAutoTUnref<const SkPicture> fPicture; 352160ebb2bfa0794d72d31a786793b13413289863dfmalita SkTLazy<SkMatrix> fMatrix; 353160ebb2bfa0794d72d31a786793b13413289863dfmalita SkTLazy<SkPaint> fPaint; 354160ebb2bfa0794d72d31a786793b13413289863dfmalita 355160ebb2bfa0794d72d31a786793b13413289863dfmalita typedef SkDrawCommand INHERITED; 356160ebb2bfa0794d72d31a786793b13413289863dfmalita}; 357160ebb2bfa0794d72d31a786793b13413289863dfmalita 358160ebb2bfa0794d72d31a786793b13413289863dfmalitaclass SkEndDrawPictureCommand : public SkDrawCommand { 359160ebb2bfa0794d72d31a786793b13413289863dfmalitapublic: 360160ebb2bfa0794d72d31a786793b13413289863dfmalita SkEndDrawPictureCommand(bool restore); 361160ebb2bfa0794d72d31a786793b13413289863dfmalita 362160ebb2bfa0794d72d31a786793b13413289863dfmalita void execute(SkCanvas* canvas) const override; 363160ebb2bfa0794d72d31a786793b13413289863dfmalita 364160ebb2bfa0794d72d31a786793b13413289863dfmalitaprivate: 365160ebb2bfa0794d72d31a786793b13413289863dfmalita bool fRestore; 3660df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 3670df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com typedef SkDrawCommand INHERITED; 368902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 369902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 3707a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawPointsCommand : public SkDrawCommand { 371902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 3727a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, const SkPoint pts[], 37357f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkPaint& paint); 3747a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org virtual ~SkDrawPointsCommand() { delete [] fPts; } 37536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 37636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 377902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 378902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkCanvas::PointMode fMode; 379a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com size_t fCount; 380a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com SkPoint* fPts; 381a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com SkPaint fPaint; 382a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com 383a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com typedef SkDrawCommand INHERITED; 384902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 385902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 3867a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawTextCommand : public SkDrawCommand { 387902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 3887a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar y, 38957f74e0aa931e7784d47cba3ecc83020aa8e72b2commit-bot@chromium.org const SkPaint& paint); 3907a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org virtual ~SkDrawTextCommand() { delete [] fText; } 39136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 392902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 39377279cbf9bfa1732b8b4b9437a4a857c6fc18b70robertphillips@google.com char* fText; 3940df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com size_t fByteLength; 395902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkScalar fX; 396902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkScalar fY; 3970df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPaint fPaint; 3980df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 3990df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com typedef SkDrawCommand INHERITED; 400902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 401902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4027a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawPosTextCommand : public SkDrawCommand { 403902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 4047a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawPosTextCommand(const void* text, size_t byteLength, const SkPoint pos[], 4057a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org const SkPaint& paint); 4067a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org virtual ~SkDrawPosTextCommand() { delete [] fPos; delete [] fText; } 40736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 408902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 4090df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com char* fText; 4100df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com size_t fByteLength; 411a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com SkPoint* fPos; 4120df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPaint fPaint; 4130df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 4140df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com typedef SkDrawCommand INHERITED; 415902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 416902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4177a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawTextOnPathCommand : public SkDrawCommand { 418902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 4197a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawTextOnPathCommand(const void* text, size_t byteLength, const SkPath& path, 4207a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org const SkMatrix* matrix, const SkPaint& paint); 4217a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org virtual ~SkDrawTextOnPathCommand() { delete [] fText; } 42236352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 423902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 42477279cbf9bfa1732b8b4b9437a4a857c6fc18b70robertphillips@google.com char* fText; 4250df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com size_t fByteLength; 4260df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPath fPath; 4270df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkMatrix fMatrix; 4280df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPaint fPaint; 4290df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 4300df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com typedef SkDrawCommand INHERITED; 431902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 432902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4337a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawPosTextHCommand : public SkDrawCommand { 434902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 4357a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawPosTextHCommand(const void* text, size_t byteLength, const SkScalar xpos[], 4367a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkScalar constY, const SkPaint& paint); 4377a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org virtual ~SkDrawPosTextHCommand() { delete [] fXpos; delete [] fText; } 43836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 439902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 440a3a09ab1d5e8ecc6f16b14610f9dd74be569cc29robertphillips@google.com SkScalar* fXpos; 4410df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com char* fText; 4420df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com size_t fByteLength; 4430df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkScalar fConstY; 4440df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPaint fPaint; 44591217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com 44691217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com typedef SkDrawCommand INHERITED; 447902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 448902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 449b7425173f96e93b090787e2386ba5f022b6c2869fmalitaclass SkDrawTextBlobCommand : public SkDrawCommand { 450b7425173f96e93b090787e2386ba5f022b6c2869fmalitapublic: 451b7425173f96e93b090787e2386ba5f022b6c2869fmalita SkDrawTextBlobCommand(const SkTextBlob* blob, SkScalar x, SkScalar y, const SkPaint& paint); 452b7425173f96e93b090787e2386ba5f022b6c2869fmalita 45336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 45436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 455b7425173f96e93b090787e2386ba5f022b6c2869fmalita 456b7425173f96e93b090787e2386ba5f022b6c2869fmalitaprivate: 457b7425173f96e93b090787e2386ba5f022b6c2869fmalita SkAutoTUnref<const SkTextBlob> fBlob; 458b7425173f96e93b090787e2386ba5f022b6c2869fmalita SkScalar fXPos; 459b7425173f96e93b090787e2386ba5f022b6c2869fmalita SkScalar fYPos; 460b7425173f96e93b090787e2386ba5f022b6c2869fmalita SkPaint fPaint; 461b7425173f96e93b090787e2386ba5f022b6c2869fmalita 462b7425173f96e93b090787e2386ba5f022b6c2869fmalita typedef SkDrawCommand INHERITED; 463b7425173f96e93b090787e2386ba5f022b6c2869fmalita}; 464b7425173f96e93b090787e2386ba5f022b6c2869fmalita 4659bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillipsclass SkDrawPatchCommand : public SkDrawCommand { 4669bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillipspublic: 4679bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips SkDrawPatchCommand(const SkPoint cubics[12], const SkColor colors[4], 4689bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips const SkPoint texCoords[4], SkXfermode* xmode, 4699bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips const SkPaint& paint); 47036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 4719bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips 4729bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillipsprivate: 4739bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips SkPoint fCubics[12]; 4749bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips SkColor fColors[4]; 4759bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips SkPoint fTexCoords[4]; 4769bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips SkAutoTUnref<SkXfermode> fXfermode; 4779bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips SkPaint fPaint; 4789bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips 4799bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips typedef SkDrawCommand INHERITED; 4809bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips}; 4819bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips 4829bafc30c7900375d316d47e24412ddfd8bd0b1f2robertphillips 4837a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawRectCommand : public SkDrawCommand { 484902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 4857a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawRectCommand(const SkRect& rect, const SkPaint& paint); 48636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 487febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com 48891217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com const SkRect& rect() const { return fRect; } 48991217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com const SkPaint& paint() const { return fPaint; } 490902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 49191217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com SkRect fRect; 49291217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com SkPaint fPaint; 49391217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com 49491217d0b0cdf80a1f18ca24d49e4a925d4629f1frobertphillips@google.com typedef SkDrawCommand INHERITED; 495902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 496902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 4977a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawRRectCommand : public SkDrawCommand { 49867baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.compublic: 4997a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& paint); 50036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 50136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 50267baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.comprivate: 50367baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com SkRRect fRRect; 504febc0ec41b4cff6ea69f2b89d72c0d330d198283robertphillips@google.com SkPaint fPaint; 5050df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 5060df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com typedef SkDrawCommand INHERITED; 50767baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com}; 50867baba4892649fdb6fb0827c7d54e5adb7538443robertphillips@google.com 5093d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.orgclass SkDrawDRRectCommand : public SkDrawCommand { 5103d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.orgpublic: 5113d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org SkDrawDRRectCommand(const SkRRect& outer, const SkRRect& inner, 5123d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org const SkPaint& paint); 51336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 51436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 5153d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.orgprivate: 5163d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org SkRRect fOuter; 5173d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org SkRRect fInner; 5183d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org SkPaint fPaint; 5193d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org 5203d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org typedef SkDrawCommand INHERITED; 5213d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org}; 5223d305207bd40f4e5ae10010492420a2fdfa1153ccommit-bot@chromium.org 5237a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawSpriteCommand : public SkDrawCommand { 524902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 5257a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawSpriteCommand(const SkBitmap& bitmap, int left, int top, const SkPaint* paint); 52636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 52736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool render(SkCanvas* canvas) const override; 528902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 5290df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkBitmap fBitmap; 5300df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com int fLeft; 5310df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com int fTop; 5320df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPaint fPaint; 5330df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPaint* fPaintPtr; 5340df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 5350df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com typedef SkDrawCommand INHERITED; 536902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 537902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 5387a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkDrawVerticesCommand : public SkDrawCommand { 539902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 5407a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkDrawVerticesCommand(SkCanvas::VertexMode vmode, int vertexCount, 5417a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org const SkPoint vertices[], const SkPoint texs[], 5427a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org const SkColor colors[], SkXfermode* xfermode, 5437a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org const uint16_t indices[], int indexCount, 5447a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org const SkPaint& paint); 5457a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org virtual ~SkDrawVerticesCommand(); 54636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 547902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 548902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkCanvas::VertexMode fVmode; 5490df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com int fVertexCount; 5500df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPoint* fVertices; 5510df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPoint* fTexs; 5520df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkColor* fColors; 553902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkXfermode* fXfermode; 5540df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com uint16_t* fIndices; 5550df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com int fIndexCount; 5560df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com SkPaint fPaint; 5570df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 5580df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com typedef SkDrawCommand INHERITED; 559902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 560902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 5617a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkSaveCommand : public SkDrawCommand { 562902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 5635f6102d07982043542343ff0a6c67b1319ac9fc7Florin Malita SkSaveCommand(); 56436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 56536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein Action action() const override { return kPushLayer_Action; } 566902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 56724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com typedef SkDrawCommand INHERITED; 568902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 569902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 5707a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkSaveLayerCommand : public SkDrawCommand { 571902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 5727a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkSaveLayerCommand(const SkRect* bounds, const SkPaint* paint, 5737a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkCanvas::SaveFlags flags); 57436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 57536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void vizExecute(SkCanvas* canvas) const override; 57636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein Action action() const override{ return kPushLayer_Action; } 57736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void setActive(bool active) override { fActive = active; } 57836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein bool active() const override { return fActive; } 5793b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com 58024bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com const SkPaint* paint() const { return fPaintPtr; } 5813b0a9fe5672e7339ec3e5e6d3986b15f57ae24e7robertphillips@google.com 582902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 58324bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkRect fBounds; 58424bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkPaint fPaint; 58524bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com SkPaint* fPaintPtr; 586902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com SkCanvas::SaveFlags fFlags; 58724bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com 588768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org bool fActive; 589768ac85655017d4106444bf3ad044680a575ccaacommit-bot@chromium.org 59024bfdac3f3a95ad21fbe3c889f218560118f3b9frobertphillips@google.com typedef SkDrawCommand INHERITED; 591902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 592902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 5937a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.orgclass SkSetMatrixCommand : public SkDrawCommand { 594902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.compublic: 5957a11591e5e09493f1589c93d53fd1fe10086920acommit-bot@chromium.org SkSetMatrixCommand(const SkMatrix& matrix); 59636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void setUserMatrix(const SkMatrix&) override; 59736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void execute(SkCanvas* canvas) const override; 598902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.comprivate: 59970171683e6977af7472f0f465bd81852d0644dddrobertphillips SkMatrix fUserMatrix; 600b94b1e781cb51a616e98dafdfa9a6cb596c871e6robertphillips@google.com SkMatrix fMatrix; 6010df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com 6020df2a9a8296173241671d47bd66f8474b4f46358robertphillips@google.com typedef SkDrawCommand INHERITED; 603902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com}; 604902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com 605902ebe5eb41a350b766238b3b103c22fe9fc0fb5chudy@google.com#endif 606