Index: src/utils/debugger/SkDrawCommand.cpp |
diff --git a/src/utils/debugger/SkDrawCommand.cpp b/src/utils/debugger/SkDrawCommand.cpp |
index 08047976922526632108d0cba0ccfe8c4336fd4b..71a7344046191147fe696194cd1649783590bad0 100644 |
--- a/src/utils/debugger/SkDrawCommand.cpp |
+++ b/src/utils/debugger/SkDrawCommand.cpp |
@@ -9,22 +9,16 @@ |
#include "SkDrawCommand.h" |
#include "SkObjectParser.h" |
- |
+#include "SkPicture.h" |
#include "SkTextBlob.h" |
// TODO(chudy): Refactor into non subclass model. |
-const char* SkDrawCommand::kDrawRectString = "Draw Rect"; |
-const char* SkDrawCommand::kClipRectString = "Clip Rect"; |
- |
-const SkDrawCommand::OpType SkDrawCommand::kSave_OpType = SAVE; |
-const SkDrawCommand::OpType SkDrawCommand::kClipRect_OpType = CLIP_RECT; |
-const SkDrawCommand::OpType SkDrawCommand::kDrawRect_OpType = DRAW_RECT; |
-const SkDrawCommand::OpType SkDrawCommand::kRestore_OpType = RESTORE; |
-const SkDrawCommand::OpType SkDrawCommand::kSetMatrix_OpType = SET_MATRIX; |
+const char* SkDrawCommand::kDrawRectString = "DrawRect"; |
+const char* SkDrawCommand::kClipRectString = "ClipRect"; |
-SkDrawCommand::SkDrawCommand(DrawType type) |
- : fDrawType(type) |
+SkDrawCommand::SkDrawCommand(OpType type) |
+ : fOpType(type) |
, fOffset(0) |
, fVisible(true) { |
} |
@@ -33,49 +27,42 @@ SkDrawCommand::~SkDrawCommand() { |
fInfo.deleteAll(); |
} |
-const char* SkDrawCommand::GetCommandString(DrawType type) { |
+const char* SkDrawCommand::GetCommandString(OpType type) { |
switch (type) { |
- case UNUSED: SkDEBUGFAIL("DrawType UNUSED\n"); break; |
- case DRAW_CLEAR: return "Clear"; |
- case CLIP_PATH: return "Clip Path"; |
- case CLIP_REGION: return "Clip Region"; |
- case CLIP_RECT: return "Clip Rect"; |
- case CLIP_RRECT: return "Clip RRect"; |
- case CONCAT: return "Concat"; |
- case DRAW_BITMAP: return "Draw Bitmap"; |
- case DRAW_BITMAP_MATRIX: return "Draw Bitmap Matrix"; |
- case DRAW_BITMAP_NINE: return "Draw Bitmap Nine"; |
- case DRAW_BITMAP_RECT_TO_RECT: return "Draw Bitmap Rect"; |
- case DRAW_DATA: return "Draw Data"; |
- case DRAW_OVAL: return "Draw Oval"; |
- case DRAW_PAINT: return "Draw Paint"; |
- case DRAW_PATH: return "Draw Path"; |
- case DRAW_PICTURE: return "Draw Picture"; |
- case DRAW_POINTS: return "Draw Points"; |
- case DRAW_POS_TEXT: return "Draw Pos Text"; |
- case DRAW_POS_TEXT_H: return "Draw Pos Text H"; |
- case DRAW_RECT: return "Draw Rect"; |
- case DRAW_RRECT: return "Draw RRect"; |
- case DRAW_SPRITE: return "Draw Sprite"; |
- case DRAW_TEXT: return "Draw Text"; |
- case DRAW_TEXT_BLOB: return "Draw Text Blob"; |
- case DRAW_TEXT_ON_PATH: return "Draw Text On Path"; |
- case DRAW_VERTICES: return "Draw Vertices"; |
- case RESTORE: return "Restore"; |
- case ROTATE: return "Rotate"; |
- case SAVE: return "Save"; |
- case SAVE_LAYER: return "Save Layer"; |
- case SCALE: return "Scale"; |
- case SET_MATRIX: return "SetMatrix"; |
- case SKEW: return "Skew"; |
- case TRANSLATE: return "Translate"; |
- case NOOP: return "NoOp"; |
- case BEGIN_COMMENT_GROUP: return "BeginCommentGroup"; |
- case COMMENT: return "Comment"; |
- case END_COMMENT_GROUP: return "EndCommentGroup"; |
- case DRAW_DRRECT: return "Draw DRRect"; |
+ case kBeginCommentGroup_OpType: return "BeginCommentGroup"; |
+ case kClipPath_OpType: return "ClipPath"; |
+ case kClipRegion_OpType: return "ClipRegion"; |
+ case kClipRect_OpType: return "ClipRect"; |
+ case kClipRRect_OpType: return "ClipRRect"; |
+ case kComment_OpType: return "Comment"; |
+ case kConcat_OpType: return "Concat"; |
+ case kDrawBitmap_OpType: return "DrawBitmap"; |
+ case kDrawBitmapNine_OpType: return "DrawBitmapNine"; |
+ case kDrawBitmapRect_OpType: return "DrawBitmapRect"; |
+ case kDrawClear_OpType: return "DrawClear"; |
+ case kDrawDRRect_OpType: return "DrawDRRect"; |
+ case kDrawOval_OpType: return "DrawOval"; |
+ 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"; |
+ case kDrawRect_OpType: return "DrawRect"; |
+ case kDrawRRect_OpType: return "DrawRRect"; |
+ case kDrawSprite_OpType: return "DrawSprite"; |
+ case kDrawText_OpType: return "DrawText"; |
+ case kDrawTextBlob_OpType: return "DrawTextBlob"; |
+ case kDrawTextOnPath_OpType: return "DrawTextOnPath"; |
+ case kDrawVertices_OpType: return "DrawVertices"; |
+ case kEndCommentGroup_OpType: return "EndCommentGroup"; |
+ case kRestore_OpType: return "Restore"; |
+ case kSave_OpType: return "Save"; |
+ case kSaveLayer_OpType: return "SaveLayer"; |
+ case kSetMatrix_OpType: return "SetMatrix"; |
default: |
- SkDebugf("DrawType error 0x%08x\n", type); |
+ SkDebugf("OpType error 0x%08x\n", type); |
SkASSERT(0); |
break; |
} |
@@ -84,10 +71,10 @@ const char* SkDrawCommand::GetCommandString(DrawType type) { |
} |
SkString SkDrawCommand::toString() const { |
- return SkString(GetCommandString(fDrawType)); |
+ return SkString(GetCommandString(fOpType)); |
} |
-SkClearCommand::SkClearCommand(SkColor color) : INHERITED(DRAW_CLEAR) { |
+SkClearCommand::SkClearCommand(SkColor color) : INHERITED(kDrawClear_OpType) { |
fColor = color; |
fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); |
} |
@@ -199,7 +186,7 @@ void render_drrect(SkCanvas* canvas, const SkRRect& outer, const SkRRect& inner) |
SkClipPathCommand::SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool doAA) |
- : INHERITED(CLIP_PATH) { |
+ : INHERITED(kClipPath_OpType) { |
fPath = path; |
fOp = op; |
fDoAA = doAA; |
@@ -219,7 +206,7 @@ bool SkClipPathCommand::render(SkCanvas* canvas) const { |
} |
SkClipRegionCommand::SkClipRegionCommand(const SkRegion& region, SkRegion::Op op) |
- : INHERITED(CLIP_REGION) { |
+ : INHERITED(kClipRegion_OpType) { |
fRegion = region; |
fOp = op; |
@@ -232,7 +219,7 @@ void SkClipRegionCommand::execute(SkCanvas* canvas) const { |
} |
SkClipRectCommand::SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool doAA) |
- : INHERITED(CLIP_RECT) { |
+ : INHERITED(kClipRect_OpType) { |
fRect = rect; |
fOp = op; |
fDoAA = doAA; |
@@ -247,7 +234,7 @@ void SkClipRectCommand::execute(SkCanvas* canvas) const { |
} |
SkClipRRectCommand::SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bool doAA) |
- : INHERITED(CLIP_RRECT) { |
+ : INHERITED(kClipRRect_OpType) { |
fRRect = rrect; |
fOp = op; |
fDoAA = doAA; |
@@ -267,7 +254,7 @@ bool SkClipRRectCommand::render(SkCanvas* canvas) const { |
} |
SkConcatCommand::SkConcatCommand(const SkMatrix& matrix) |
- : INHERITED(CONCAT) { |
+ : INHERITED(kConcat_OpType) { |
fMatrix = matrix; |
fInfo.push(SkObjectParser::MatrixToString(matrix)); |
@@ -279,7 +266,7 @@ void SkConcatCommand::execute(SkCanvas* canvas) const { |
SkDrawBitmapCommand::SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top, |
const SkPaint* paint) |
- : INHERITED(DRAW_BITMAP) { |
+ : INHERITED(kDrawBitmap_OpType) { |
fBitmap = bitmap; |
fLeft = left; |
fTop = top; |
@@ -309,7 +296,7 @@ bool SkDrawBitmapCommand::render(SkCanvas* canvas) const { |
SkDrawBitmapNineCommand::SkDrawBitmapNineCommand(const SkBitmap& bitmap, const SkIRect& center, |
const SkRect& dst, const SkPaint* paint) |
- : INHERITED(DRAW_BITMAP_NINE) { |
+ : INHERITED(kDrawBitmapNine_OpType) { |
fBitmap = bitmap; |
fCenter = center; |
fDst = dst; |
@@ -340,7 +327,7 @@ bool SkDrawBitmapNineCommand::render(SkCanvas* canvas) const { |
SkDrawBitmapRectCommand::SkDrawBitmapRectCommand(const SkBitmap& bitmap, const SkRect* src, |
const SkRect& dst, const SkPaint* paint, |
SkCanvas::DrawBitmapRectFlags flags) |
- : INHERITED(DRAW_BITMAP_RECT_TO_RECT) { |
+ : INHERITED(kDrawBitmapRect_OpType) { |
fBitmap = bitmap; |
if (src) { |
fSrc = *src; |
@@ -378,7 +365,7 @@ bool SkDrawBitmapRectCommand::render(SkCanvas* canvas) const { |
} |
SkBeginCommentGroupCommand::SkBeginCommentGroupCommand(const char* description) |
- : INHERITED(BEGIN_COMMENT_GROUP) |
+ : INHERITED(kBeginCommentGroup_OpType) |
, fDescription(description) { |
SkString* temp = new SkString; |
temp->appendf("Description: %s", description); |
@@ -386,7 +373,7 @@ SkBeginCommentGroupCommand::SkBeginCommentGroupCommand(const char* description) |
} |
SkCommentCommand::SkCommentCommand(const char* kywd, const char* value) |
- : INHERITED(COMMENT) |
+ : INHERITED(kComment_OpType) |
, fKywd(kywd) |
, fValue(value) { |
SkString* temp = new SkString; |
@@ -395,11 +382,11 @@ SkCommentCommand::SkCommentCommand(const char* kywd, const char* value) |
} |
SkEndCommentGroupCommand::SkEndCommentGroupCommand() |
- : INHERITED(END_COMMENT_GROUP) { |
+ : INHERITED(kEndCommentGroup_OpType) { |
} |
SkDrawOvalCommand::SkDrawOvalCommand(const SkRect& oval, const SkPaint& paint) |
- : INHERITED(DRAW_OVAL) { |
+ : INHERITED(kDrawOval_OpType) { |
fOval = oval; |
fPaint = paint; |
@@ -428,7 +415,7 @@ bool SkDrawOvalCommand::render(SkCanvas* canvas) const { |
} |
SkDrawPaintCommand::SkDrawPaintCommand(const SkPaint& paint) |
- : INHERITED(DRAW_PAINT) { |
+ : INHERITED(kDrawPaint_OpType) { |
fPaint = paint; |
fInfo.push(SkObjectParser::PaintToString(paint)); |
@@ -445,7 +432,7 @@ bool SkDrawPaintCommand::render(SkCanvas* canvas) const { |
} |
SkDrawPathCommand::SkDrawPathCommand(const SkPath& path, const SkPaint& paint) |
- : INHERITED(DRAW_PATH) { |
+ : INHERITED(kDrawPath_OpType) { |
fPath = path; |
fPaint = paint; |
@@ -465,7 +452,7 @@ bool SkDrawPathCommand::render(SkCanvas* canvas) const { |
SkDrawPictureCommand::SkDrawPictureCommand(const SkPicture* picture, |
const SkMatrix* matrix, |
const SkPaint* paint) |
- : INHERITED(DRAW_PICTURE) |
+ : INHERITED(kDrawPicture_OpType) |
, fPicture(SkRef(picture)) |
, fMatrixPtr(NULL) |
, fPaintPtr(NULL) { |
@@ -511,7 +498,7 @@ bool SkDrawPictureCommand::render(SkCanvas* canvas) const { |
SkDrawPointsCommand::SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, |
const SkPoint pts[], const SkPaint& paint) |
- : INHERITED(DRAW_POINTS) { |
+ : INHERITED(kDrawPoints_OpType) { |
fMode = mode; |
fCount = count; |
fPts = new SkPoint[count]; |
@@ -554,7 +541,7 @@ bool SkDrawPointsCommand::render(SkCanvas* canvas) const { |
SkDrawPosTextCommand::SkDrawPosTextCommand(const void* text, size_t byteLength, |
const SkPoint pos[], const SkPaint& paint) |
- : INHERITED(DRAW_POS_TEXT) { |
+ : INHERITED(kDrawPosText_OpType) { |
size_t numPts = paint.countText(text, byteLength); |
fText = new char[byteLength]; |
@@ -580,7 +567,7 @@ void SkDrawPosTextCommand::execute(SkCanvas* canvas) const { |
SkDrawPosTextHCommand::SkDrawPosTextHCommand(const void* text, size_t byteLength, |
const SkScalar xpos[], SkScalar constY, |
const SkPaint& paint) |
- : INHERITED(DRAW_POS_TEXT_H) { |
+ : INHERITED(kDrawPosTextH_OpType) { |
size_t numPts = paint.countText(text, byteLength); |
fText = new char[byteLength]; |
@@ -605,7 +592,7 @@ void SkDrawPosTextHCommand::execute(SkCanvas* canvas) const { |
SkDrawTextBlobCommand::SkDrawTextBlobCommand(const SkTextBlob* blob, SkScalar x, SkScalar y, |
const SkPaint& paint) |
- : INHERITED(DRAW_TEXT_BLOB) |
+ : INHERITED(kDrawTextBlob_OpType) |
, fBlob(blob) |
, fXPos(x) |
, fYPos(y) |
@@ -638,8 +625,25 @@ bool SkDrawTextBlobCommand::render(SkCanvas* canvas) const { |
return true; |
} |
+SkDrawPatchCommand::SkDrawPatchCommand(const SkPoint cubics[12], const SkColor colors[4], |
+ const SkPoint texCoords[4], SkXfermode* xfermode, |
+ const SkPaint& paint) |
+ : INHERITED(kDrawPatch_OpType) { |
+ memcpy(fCubics, cubics, sizeof(fCubics)); |
+ memcpy(fColors, colors, sizeof(fColors)); |
+ memcpy(fTexCoords, texCoords, sizeof(fTexCoords)); |
+ fXfermode.reset(xfermode); |
+ fPaint = paint; |
+ |
+ fInfo.push(SkObjectParser::PaintToString(paint)); |
+} |
+ |
+void SkDrawPatchCommand::execute(SkCanvas* canvas) const { |
+ canvas->drawPatch(fCubics, fColors, fTexCoords, fXfermode, fPaint); |
+} |
+ |
SkDrawRectCommand::SkDrawRectCommand(const SkRect& rect, const SkPaint& paint) |
- : INHERITED(DRAW_RECT) { |
+ : INHERITED(kDrawRect_OpType) { |
fRect = rect; |
fPaint = paint; |
@@ -652,7 +656,7 @@ void SkDrawRectCommand::execute(SkCanvas* canvas) const { |
} |
SkDrawRRectCommand::SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& paint) |
- : INHERITED(DRAW_RRECT) { |
+ : INHERITED(kDrawRRect_OpType) { |
fRRect = rrect; |
fPaint = paint; |
@@ -672,7 +676,7 @@ bool SkDrawRRectCommand::render(SkCanvas* canvas) const { |
SkDrawDRRectCommand::SkDrawDRRectCommand(const SkRRect& outer, |
const SkRRect& inner, |
const SkPaint& paint) |
- : INHERITED(DRAW_DRRECT) { |
+ : INHERITED(kDrawDRRect_OpType) { |
fOuter = outer; |
fInner = inner; |
fPaint = paint; |
@@ -693,7 +697,7 @@ bool SkDrawDRRectCommand::render(SkCanvas* canvas) const { |
SkDrawSpriteCommand::SkDrawSpriteCommand(const SkBitmap& bitmap, int left, int top, |
const SkPaint* paint) |
- : INHERITED(DRAW_SPRITE) { |
+ : INHERITED(kDrawSprite_OpType) { |
fBitmap = bitmap; |
fLeft = left; |
fTop = top; |
@@ -723,7 +727,7 @@ bool SkDrawSpriteCommand::render(SkCanvas* canvas) const { |
SkDrawTextCommand::SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar y, |
const SkPaint& paint) |
- : INHERITED(DRAW_TEXT) { |
+ : INHERITED(kDrawText_OpType) { |
fText = new char[byteLength]; |
memcpy(fText, text, byteLength); |
fByteLength = byteLength; |
@@ -744,7 +748,7 @@ void SkDrawTextCommand::execute(SkCanvas* canvas) const { |
SkDrawTextOnPathCommand::SkDrawTextOnPathCommand(const void* text, size_t byteLength, |
const SkPath& path, const SkMatrix* matrix, |
const SkPaint& paint) |
- : INHERITED(DRAW_TEXT_ON_PATH) { |
+ : INHERITED(kDrawTextOnPath_OpType) { |
fText = new char[byteLength]; |
memcpy(fText, text, byteLength); |
fByteLength = byteLength; |
@@ -775,7 +779,7 @@ SkDrawVerticesCommand::SkDrawVerticesCommand(SkCanvas::VertexMode vmode, int ver |
const SkColor colors[], SkXfermode* xfermode, |
const uint16_t indices[], int indexCount, |
const SkPaint& paint) |
- : INHERITED(DRAW_VERTICES) { |
+ : INHERITED(kDrawVertices_OpType) { |
fVmode = vmode; |
fVertexCount = vertexCount; |
@@ -832,7 +836,7 @@ void SkDrawVerticesCommand::execute(SkCanvas* canvas) const { |
} |
SkRestoreCommand::SkRestoreCommand() |
- : INHERITED(RESTORE) { |
+ : INHERITED(kRestore_OpType) { |
fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); |
} |
@@ -840,19 +844,8 @@ void SkRestoreCommand::execute(SkCanvas* canvas) const { |
canvas->restore(); |
} |
-SkRotateCommand::SkRotateCommand(SkScalar degrees) |
- : INHERITED(ROTATE) { |
- fDegrees = degrees; |
- |
- fInfo.push(SkObjectParser::ScalarToString(degrees, "SkScalar degrees: ")); |
-} |
- |
-void SkRotateCommand::execute(SkCanvas* canvas) const { |
- canvas->rotate(fDegrees); |
-} |
- |
SkSaveCommand::SkSaveCommand() |
- : INHERITED(SAVE) { |
+ : INHERITED(kSave_OpType) { |
} |
void SkSaveCommand::execute(SkCanvas* canvas) const { |
@@ -861,7 +854,7 @@ void SkSaveCommand::execute(SkCanvas* canvas) const { |
SkSaveLayerCommand::SkSaveLayerCommand(const SkRect* bounds, const SkPaint* paint, |
SkCanvas::SaveFlags flags) |
- : INHERITED(SAVE_LAYER) { |
+ : INHERITED(kSaveLayer_OpType) { |
if (bounds) { |
fBounds = *bounds; |
} else { |
@@ -895,21 +888,8 @@ void SkSaveLayerCommand::vizExecute(SkCanvas* canvas) const { |
canvas->save(); |
} |
-SkScaleCommand::SkScaleCommand(SkScalar sx, SkScalar sy) |
- : INHERITED(SCALE) { |
- fSx = sx; |
- fSy = sy; |
- |
- fInfo.push(SkObjectParser::ScalarToString(sx, "SkScalar sx: ")); |
- fInfo.push(SkObjectParser::ScalarToString(sy, "SkScalar sy: ")); |
-} |
- |
-void SkScaleCommand::execute(SkCanvas* canvas) const { |
- canvas->scale(fSx, fSy); |
-} |
- |
SkSetMatrixCommand::SkSetMatrixCommand(const SkMatrix& matrix) |
- : INHERITED(SET_MATRIX) { |
+ : INHERITED(kSetMatrix_OpType) { |
fUserMatrix.reset(); |
fMatrix = matrix; |
@@ -925,29 +905,3 @@ void SkSetMatrixCommand::execute(SkCanvas* canvas) const { |
canvas->setMatrix(temp); |
} |
-SkSkewCommand::SkSkewCommand(SkScalar sx, SkScalar sy) |
- : INHERITED(SKEW) { |
- fSx = sx; |
- fSy = sy; |
- |
- fInfo.push(SkObjectParser::ScalarToString(sx, "SkScalar sx: ")); |
- fInfo.push(SkObjectParser::ScalarToString(sy, "SkScalar sy: ")); |
-} |
- |
-void SkSkewCommand::execute(SkCanvas* canvas) const { |
- canvas->skew(fSx, fSy); |
-} |
- |
-SkTranslateCommand::SkTranslateCommand(SkScalar dx, SkScalar dy) |
- : INHERITED(TRANSLATE) { |
- fDx = dx; |
- fDy = dy; |
- |
- fInfo.push(SkObjectParser::ScalarToString(dx, "SkScalar dx: ")); |
- fInfo.push(SkObjectParser::ScalarToString(dy, "SkScalar dy: ")); |
-} |
- |
-void SkTranslateCommand::execute(SkCanvas* canvas) const { |
- canvas->translate(fDx, fDy); |
-} |
- |