Add support for new drawPicture entry point to debugger

R=fmalita@google.com, fmalita@chromium.org

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/464063003
This commit is contained in:
robertphillips 2014-08-13 10:46:23 -07:00 committed by Commit bot
parent c773390eef
commit b3f319fbb0
3 changed files with 33 additions and 8 deletions

View File

@ -519,9 +519,10 @@ void SkDebugCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
this->addDrawCommand(new SkDrawPathCommand(path, paint));
}
void SkDebugCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix*, const SkPaint*) {
// todo: add matrix and paint to SkDrawPictureCommand
this->addDrawCommand(new SkDrawPictureCommand(picture));
void SkDebugCanvas::onDrawPicture(const SkPicture* picture,
const SkMatrix* matrix,
const SkPaint* paint) {
this->addDrawCommand(new SkDrawPictureCommand(picture, matrix, paint));
}
void SkDebugCanvas::drawPoints(PointMode mode, size_t count,

View File

@ -273,7 +273,7 @@ void SkConcatCommand::execute(SkCanvas* canvas) {
}
SkDrawBitmapCommand::SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top,
const SkPaint* paint)
const SkPaint* paint)
: INHERITED(DRAW_BITMAP) {
fBitmap = bitmap;
fLeft = left;
@ -502,16 +502,36 @@ bool SkDrawPathCommand::render(SkCanvas* canvas) const {
return true;
}
SkDrawPictureCommand::SkDrawPictureCommand(const SkPicture* picture)
SkDrawPictureCommand::SkDrawPictureCommand(const SkPicture* picture,
const SkMatrix* matrix,
const SkPaint* paint)
: INHERITED(DRAW_PICTURE)
, fPicture(SkRef(picture)) {
, fPicture(SkRef(picture))
, fMatrixPtr(NULL)
, fPaintPtr(NULL) {
if (NULL != matrix) {
fMatrix = *matrix;
fMatrixPtr = &fMatrix;
}
if (NULL != paint) {
fPaint = *paint;
fPaintPtr = &fPaint;
}
SkString* temp = new SkString;
temp->appendf("SkPicture: W: %d H: %d", picture->width(), picture->height());
fInfo.push(temp);
if (NULL != matrix) {
fInfo.push(SkObjectParser::MatrixToString(*matrix));
}
if (NULL != paint) {
fInfo.push(SkObjectParser::PaintToString(*paint));
}
}
void SkDrawPictureCommand::execute(SkCanvas* canvas) {
canvas->drawPicture(fPicture);
canvas->drawPicture(fPicture, fMatrixPtr, fPaintPtr);
}
bool SkDrawPictureCommand::render(SkCanvas* canvas) const {

View File

@ -343,12 +343,16 @@ private:
class SkDrawPictureCommand : public SkDrawCommand {
public:
SkDrawPictureCommand(const SkPicture* picture);
SkDrawPictureCommand(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint);
virtual void execute(SkCanvas* canvas) SK_OVERRIDE;
virtual bool render(SkCanvas* canvas) const SK_OVERRIDE;
private:
SkAutoTUnref<const SkPicture> fPicture;
SkMatrix fMatrix;
SkMatrix* fMatrixPtr;
SkPaint fPaint;
SkPaint* fPaintPtr;
typedef SkDrawCommand INHERITED;
};