| Index: src/utils/debugger/SkDrawCommand.cpp
|
| diff --git a/src/utils/debugger/SkDrawCommand.cpp b/src/utils/debugger/SkDrawCommand.cpp
|
| index d09de783518477bbcc60f7bd7f591c1fb005bd05..09b18896bcc7adf661ce8138f7760fc08fb43385 100644
|
| --- a/src/utils/debugger/SkDrawCommand.cpp
|
| +++ b/src/utils/debugger/SkDrawCommand.cpp
|
| @@ -26,6 +26,7 @@ SkDrawCommand::~SkDrawCommand() {
|
| const char* SkDrawCommand::GetCommandString(OpType type) {
|
| switch (type) {
|
| case kBeginCommentGroup_OpType: return "BeginCommentGroup";
|
| + case kBeginDrawPicture_OpType: return "BeginDrawPicture";
|
| case kClipPath_OpType: return "ClipPath";
|
| case kClipRegion_OpType: return "ClipRegion";
|
| case kClipRect_OpType: return "ClipRect";
|
| @@ -41,7 +42,6 @@ const char* SkDrawCommand::GetCommandString(OpType type) {
|
| case kDrawPaint_OpType: return "DrawPaint";
|
| case kDrawPatch_OpType: return "DrawPatch";
|
| case kDrawPath_OpType: return "DrawPath";
|
| - case kDrawPicture_OpType: return "DrawPicture";
|
| case kDrawPoints_OpType: return "DrawPoints";
|
| case kDrawPosText_OpType: return "DrawPosText";
|
| case kDrawPosTextH_OpType: return "DrawPosTextH";
|
| @@ -53,6 +53,7 @@ const char* SkDrawCommand::GetCommandString(OpType type) {
|
| case kDrawTextOnPath_OpType: return "DrawTextOnPath";
|
| case kDrawVertices_OpType: return "DrawVertices";
|
| case kEndCommentGroup_OpType: return "EndCommentGroup";
|
| + case kEndDrawPicture_OpType: return "EndDrawPicture";
|
| case kRestore_OpType: return "Restore";
|
| case kSave_OpType: return "Save";
|
| case kSaveLayer_OpType: return "SaveLayer";
|
| @@ -445,41 +446,48 @@ bool SkDrawPathCommand::render(SkCanvas* canvas) const {
|
| return true;
|
| }
|
|
|
| -SkDrawPictureCommand::SkDrawPictureCommand(const SkPicture* picture,
|
| - const SkMatrix* matrix,
|
| - const SkPaint* paint)
|
| - : INHERITED(kDrawPicture_OpType)
|
| - , fPicture(SkRef(picture))
|
| - , fMatrixPtr(NULL)
|
| - , fPaintPtr(NULL) {
|
| +SkBeginDrawPictureCommand::SkBeginDrawPictureCommand(const SkPicture* picture,
|
| + const SkMatrix* matrix,
|
| + const SkPaint* paint)
|
| + : INHERITED(kBeginDrawPicture_OpType)
|
| + , fPicture(SkRef(picture)) {
|
|
|
| - if (matrix) {
|
| - fMatrix = *matrix;
|
| - fMatrixPtr = &fMatrix;
|
| - }
|
| - if (paint) {
|
| - fPaint = *paint;
|
| - fPaintPtr = &fPaint;
|
| - }
|
| + SkString* str = new SkString;
|
| + str->appendf("SkPicture: L: %f T: %f R: %f B: %f",
|
| + picture->cullRect().fLeft, picture->cullRect().fTop,
|
| + picture->cullRect().fRight, picture->cullRect().fBottom);
|
| + fInfo.push(str);
|
|
|
| - SkString* temp = new SkString;
|
| - temp->appendf("SkPicture: L: %f T: %f R: %f B: %f",
|
| - picture->cullRect().fLeft, picture->cullRect().fTop,
|
| - picture->cullRect().fRight, picture->cullRect().fBottom);
|
| - fInfo.push(temp);
|
| if (matrix) {
|
| + fMatrix.set(*matrix);
|
| fInfo.push(SkObjectParser::MatrixToString(*matrix));
|
| }
|
| +
|
| if (paint) {
|
| + fPaint.set(*paint);
|
| fInfo.push(SkObjectParser::PaintToString(*paint));
|
| }
|
| +
|
| }
|
|
|
| -void SkDrawPictureCommand::execute(SkCanvas* canvas) const {
|
| - canvas->drawPicture(fPicture, fMatrixPtr, fPaintPtr);
|
| +void SkBeginDrawPictureCommand::execute(SkCanvas* canvas) const {
|
| + if (fPaint.isValid()) {
|
| + SkRect bounds = fPicture->cullRect();
|
| + if (fMatrix.isValid()) {
|
| + fMatrix.get()->mapRect(&bounds);
|
| + }
|
| + canvas->saveLayer(&bounds, fPaint.get());
|
| + }
|
| +
|
| + if (fMatrix.isValid()) {
|
| + if (!fPaint.isValid()) {
|
| + canvas->save();
|
| + }
|
| + canvas->concat(*fMatrix.get());
|
| + }
|
| }
|
|
|
| -bool SkDrawPictureCommand::render(SkCanvas* canvas) const {
|
| +bool SkBeginDrawPictureCommand::render(SkCanvas* canvas) const {
|
| canvas->clear(0xFFFFFFFF);
|
| canvas->save();
|
|
|
| @@ -492,6 +500,15 @@ bool SkDrawPictureCommand::render(SkCanvas* canvas) const {
|
| return true;
|
| }
|
|
|
| +SkEndDrawPictureCommand::SkEndDrawPictureCommand(bool restore)
|
| + : INHERITED(kEndDrawPicture_OpType) , fRestore(restore) { }
|
| +
|
| +void SkEndDrawPictureCommand::execute(SkCanvas* canvas) const {
|
| + if (fRestore) {
|
| + canvas->restore();
|
| + }
|
| +}
|
| +
|
| SkDrawPointsCommand::SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count,
|
| const SkPoint pts[], const SkPaint& paint)
|
| : INHERITED(kDrawPoints_OpType) {
|
|
|