| |
| /* |
| * Copyright 2012 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #include "SkDebugger.h" |
| |
| SkDebugger::SkDebugger() { |
| // Create this some other dynamic way? |
| fDebugCanvas = new SkDebugCanvas(100, 100); |
| fPicture = NULL; |
| fPictureWidth = 0; |
| fPictureHeight = 0; |
| fIndex = 0; |
| } |
| |
| SkDebugger::~SkDebugger() { |
| // Need to inherit from SkRef object in order for following to work |
| SkSafeUnref(fDebugCanvas); |
| SkSafeUnref(fPicture); |
| } |
| |
| void SkDebugger::loadPicture(SkPicture* picture) { |
| fPictureWidth = picture->width(); |
| fPictureHeight = picture->height(); |
| delete fDebugCanvas; |
| fDebugCanvas = new SkDebugCanvas(fPictureWidth, fPictureHeight); |
| fDebugCanvas->setBounds(fPictureWidth, fPictureHeight); |
| picture->draw(fDebugCanvas); |
| fIndex = fDebugCanvas->getSize() - 1; |
| SkRefCnt_SafeAssign(fPicture, picture); |
| } |
| |
| SkPicture* SkDebugger::copyPicture() { |
| // We can't just call clone here since we want to removed the "deleted" |
| // commands. Playing back will strip those out. |
| SkPicture* newPicture = new SkPicture; |
| SkCanvas* canvas = newPicture->beginRecording(fPictureWidth, fPictureHeight); |
| fDebugCanvas->draw(canvas); |
| newPicture->endRecording(); |
| return newPicture; |
| } |