| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 | 9 |
| 10 #include "SkDrawCommand.h" | 10 #include "SkDrawCommand.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 } | 63 } |
| 64 SkDEBUGFAIL("DrawType UNUSED\n"); | 64 SkDEBUGFAIL("DrawType UNUSED\n"); |
| 65 return NULL; | 65 return NULL; |
| 66 } | 66 } |
| 67 | 67 |
| 68 SkString SkDrawCommand::toString() { | 68 SkString SkDrawCommand::toString() { |
| 69 return SkString(GetCommandString(fDrawType)); | 69 return SkString(GetCommandString(fDrawType)); |
| 70 } | 70 } |
| 71 | 71 |
| 72 Clear::Clear(SkColor color) { | 72 Clear::Clear(SkColor color) { |
| 73 this->fColor = color; | 73 fColor = color; |
| 74 this->fDrawType = DRAW_CLEAR; | 74 fDrawType = DRAW_CLEAR; |
| 75 this->fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); | 75 fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); |
| 76 } | 76 } |
| 77 | 77 |
| 78 void Clear::execute(SkCanvas* canvas) { | 78 void Clear::execute(SkCanvas* canvas) { |
| 79 canvas->clear(this->fColor); | 79 canvas->clear(fColor); |
| 80 } | 80 } |
| 81 | 81 |
| 82 ClipPath::ClipPath(const SkPath& path, SkRegion::Op op, bool doAA, SkBitmap& bit
map) { | 82 ClipPath::ClipPath(const SkPath& path, SkRegion::Op op, bool doAA, SkBitmap& bit
map) { |
| 83 fPath = path; | 83 fPath = path; |
| 84 fOp = op; | 84 fOp = op; |
| 85 fDoAA = doAA; | 85 fDoAA = doAA; |
| 86 fDrawType = CLIP_PATH; | 86 fDrawType = CLIP_PATH; |
| 87 fBitmap = bitmap; | 87 fBitmap = bitmap; |
| 88 | 88 |
| 89 fInfo.push(SkObjectParser::PathToString(path)); | 89 fInfo.push(SkObjectParser::PathToString(path)); |
| 90 fInfo.push(SkObjectParser::RegionOpToString(op)); | 90 fInfo.push(SkObjectParser::RegionOpToString(op)); |
| 91 fInfo.push(SkObjectParser::BoolToString(doAA)); | 91 fInfo.push(SkObjectParser::BoolToString(doAA)); |
| 92 } | 92 } |
| 93 | 93 |
| 94 void ClipPath::execute(SkCanvas* canvas) { | 94 void ClipPath::execute(SkCanvas* canvas) { |
| 95 canvas->clipPath(fPath, fOp, fDoAA); | 95 canvas->clipPath(fPath, fOp, fDoAA); |
| 96 } | 96 } |
| 97 | 97 |
| 98 const SkBitmap* ClipPath::getBitmap() const { | 98 const SkBitmap* ClipPath::getBitmap() const { |
| 99 return &fBitmap; | 99 return &fBitmap; |
| 100 } | 100 } |
| 101 | 101 |
| 102 ClipRegion::ClipRegion(const SkRegion& region, SkRegion::Op op) { | 102 ClipRegion::ClipRegion(const SkRegion& region, SkRegion::Op op) { |
| 103 this->fRegion = ®ion; | 103 fRegion = region; |
| 104 this->fOp = op; | 104 fOp = op; |
| 105 this->fDrawType = CLIP_REGION; | 105 fDrawType = CLIP_REGION; |
| 106 | 106 |
| 107 this->fInfo.push(SkObjectParser::RegionToString(region)); | 107 fInfo.push(SkObjectParser::RegionToString(region)); |
| 108 this->fInfo.push(SkObjectParser::RegionOpToString(op)); | 108 fInfo.push(SkObjectParser::RegionOpToString(op)); |
| 109 } | 109 } |
| 110 | 110 |
| 111 void ClipRegion::execute(SkCanvas* canvas) { | 111 void ClipRegion::execute(SkCanvas* canvas) { |
| 112 canvas->clipRegion(*this->fRegion, this->fOp); | 112 canvas->clipRegion(fRegion, fOp); |
| 113 } | 113 } |
| 114 | 114 |
| 115 ClipRect::ClipRect(const SkRect& rect, SkRegion::Op op, bool doAA) { | 115 ClipRect::ClipRect(const SkRect& rect, SkRegion::Op op, bool doAA) { |
| 116 fRect = rect; | 116 fRect = rect; |
| 117 fOp = op; | 117 fOp = op; |
| 118 fDoAA = doAA; | 118 fDoAA = doAA; |
| 119 fDrawType = CLIP_RECT; | 119 fDrawType = CLIP_RECT; |
| 120 | 120 |
| 121 fInfo.push(SkObjectParser::RectToString(rect)); | 121 fInfo.push(SkObjectParser::RectToString(rect)); |
| 122 fInfo.push(SkObjectParser::RegionOpToString(op)); | 122 fInfo.push(SkObjectParser::RegionOpToString(op)); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 136 fInfo.push(SkObjectParser::RRectToString(rrect)); | 136 fInfo.push(SkObjectParser::RRectToString(rrect)); |
| 137 fInfo.push(SkObjectParser::RegionOpToString(op)); | 137 fInfo.push(SkObjectParser::RegionOpToString(op)); |
| 138 fInfo.push(SkObjectParser::BoolToString(doAA)); | 138 fInfo.push(SkObjectParser::BoolToString(doAA)); |
| 139 } | 139 } |
| 140 | 140 |
| 141 void ClipRRect::execute(SkCanvas* canvas) { | 141 void ClipRRect::execute(SkCanvas* canvas) { |
| 142 canvas->clipRRect(fRRect, fOp, fDoAA); | 142 canvas->clipRRect(fRRect, fOp, fDoAA); |
| 143 } | 143 } |
| 144 | 144 |
| 145 Concat::Concat(const SkMatrix& matrix) { | 145 Concat::Concat(const SkMatrix& matrix) { |
| 146 this->fMatrix = &matrix; | 146 fMatrix = matrix; |
| 147 this->fDrawType = CONCAT; | 147 fDrawType = CONCAT; |
| 148 | 148 |
| 149 this->fInfo.push(SkObjectParser::MatrixToString(matrix)); | 149 fInfo.push(SkObjectParser::MatrixToString(matrix)); |
| 150 } | 150 } |
| 151 | 151 |
| 152 void Concat::execute(SkCanvas* canvas) { | 152 void Concat::execute(SkCanvas* canvas) { |
| 153 canvas->concat(*this->fMatrix); | 153 canvas->concat(fMatrix); |
| 154 } | 154 } |
| 155 | 155 |
| 156 DrawBitmap::DrawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, | 156 DrawBitmap::DrawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top, |
| 157 const SkPaint* paint, SkBitmap& resizedBitmap) { | 157 const SkPaint* paint, SkBitmap& resizedBitmap) { |
| 158 this->fBitmap = &bitmap; | 158 fBitmap = bitmap; |
| 159 this->fLeft = left; | 159 fLeft = left; |
| 160 this->fTop = top; | 160 fTop = top; |
| 161 this->fPaint = paint; | 161 if (NULL != paint) { |
| 162 this->fDrawType = DRAW_BITMAP; | 162 fPaint = *paint; |
| 163 this->fResizedBitmap = resizedBitmap; | 163 fPaintPtr = &fPaint; |
| 164 } else { |
| 165 fPaintPtr = NULL; |
| 166 } |
| 167 fDrawType = DRAW_BITMAP; |
| 168 fResizedBitmap = resizedBitmap; |
| 164 | 169 |
| 165 this->fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 170 fInfo.push(SkObjectParser::BitmapToString(bitmap)); |
| 166 this->fInfo.push(SkObjectParser::ScalarToString(left, "SkScalar left: ")); | 171 fInfo.push(SkObjectParser::ScalarToString(left, "SkScalar left: ")); |
| 167 this->fInfo.push(SkObjectParser::ScalarToString(top, "SkScalar top: ")); | 172 fInfo.push(SkObjectParser::ScalarToString(top, "SkScalar top: ")); |
| 168 if (NULL != paint) { | 173 if (NULL != paint) { |
| 169 this->fInfo.push(SkObjectParser::PaintToString(*paint)); | 174 fInfo.push(SkObjectParser::PaintToString(*paint)); |
| 170 } | 175 } |
| 171 } | 176 } |
| 172 | 177 |
| 173 void DrawBitmap::execute(SkCanvas* canvas) { | 178 void DrawBitmap::execute(SkCanvas* canvas) { |
| 174 canvas->drawBitmap(*this->fBitmap, this->fLeft, this->fTop, this->fPaint); | 179 canvas->drawBitmap(fBitmap, fLeft, fTop, fPaintPtr); |
| 175 } | 180 } |
| 176 | 181 |
| 177 const SkBitmap* DrawBitmap::getBitmap() const { | 182 const SkBitmap* DrawBitmap::getBitmap() const { |
| 178 return &fResizedBitmap; | 183 return &fResizedBitmap; |
| 179 } | 184 } |
| 180 | 185 |
| 181 DrawBitmapMatrix::DrawBitmapMatrix(const SkBitmap& bitmap, | 186 DrawBitmapMatrix::DrawBitmapMatrix(const SkBitmap& bitmap, |
| 182 const SkMatrix& matrix, const SkPaint* paint, SkBitmap& resizedBitmap) { | 187 const SkMatrix& matrix, |
| 183 this->fBitmap = &bitmap; | 188 const SkPaint* paint, |
| 184 this->fMatrix = &matrix; | 189 SkBitmap& resizedBitmap) { |
| 185 this->fPaint = paint; | 190 fBitmap = bitmap; |
| 186 this->fDrawType = DRAW_BITMAP_MATRIX; | 191 fMatrix = matrix; |
| 187 this->fResizedBitmap = resizedBitmap; | 192 if (NULL != paint) { |
| 193 fPaint = *paint; |
| 194 fPaintPtr = &fPaint; |
| 195 } else { |
| 196 fPaintPtr = NULL; |
| 197 } |
| 198 fDrawType = DRAW_BITMAP_MATRIX; |
| 199 fResizedBitmap = resizedBitmap; |
| 188 | 200 |
| 189 this->fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 201 fInfo.push(SkObjectParser::BitmapToString(bitmap)); |
| 190 this->fInfo.push(SkObjectParser::MatrixToString(matrix)); | 202 fInfo.push(SkObjectParser::MatrixToString(matrix)); |
| 191 if (NULL != paint) { | 203 if (NULL != paint) { |
| 192 this->fInfo.push(SkObjectParser::PaintToString(*paint)); | 204 fInfo.push(SkObjectParser::PaintToString(*paint)); |
| 193 } | 205 } |
| 194 } | 206 } |
| 195 | 207 |
| 196 void DrawBitmapMatrix::execute(SkCanvas* canvas) { | 208 void DrawBitmapMatrix::execute(SkCanvas* canvas) { |
| 197 canvas->drawBitmapMatrix(*this->fBitmap, *this->fMatrix, this->fPaint); | 209 canvas->drawBitmapMatrix(fBitmap, fMatrix, fPaintPtr); |
| 198 } | 210 } |
| 199 | 211 |
| 200 const SkBitmap* DrawBitmapMatrix::getBitmap() const { | 212 const SkBitmap* DrawBitmapMatrix::getBitmap() const { |
| 201 return &fResizedBitmap; | 213 return &fResizedBitmap; |
| 202 } | 214 } |
| 203 | 215 |
| 204 DrawBitmapNine::DrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, | 216 DrawBitmapNine::DrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, |
| 205 const SkRect& dst, const SkPaint* paint, SkBitmap& resizedBitmap) { | 217 const SkRect& dst, const SkPaint* paint, |
| 206 this->fBitmap = &bitmap; | 218 SkBitmap& resizedBitmap) { |
| 207 this->fCenter = ¢er; | 219 fBitmap = bitmap; |
| 208 this->fDst = &dst; | 220 fCenter = center; |
| 209 this->fPaint = paint; | 221 fDst = dst; |
| 210 this->fDrawType = DRAW_BITMAP_NINE; | 222 if (NULL != paint) { |
| 211 this->fResizedBitmap = resizedBitmap; | 223 fPaint = *paint; |
| 224 fPaintPtr = &fPaint; |
| 225 } else { |
| 226 fPaintPtr = NULL; |
| 227 } |
| 228 fDrawType = DRAW_BITMAP_NINE; |
| 229 fResizedBitmap = resizedBitmap; |
| 212 | 230 |
| 213 this->fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 231 fInfo.push(SkObjectParser::BitmapToString(bitmap)); |
| 214 this->fInfo.push(SkObjectParser::IRectToString(center)); | 232 fInfo.push(SkObjectParser::IRectToString(center)); |
| 215 this->fInfo.push(SkObjectParser::RectToString(dst, "Dst: ")); | 233 fInfo.push(SkObjectParser::RectToString(dst, "Dst: ")); |
| 216 if (NULL != paint) { | 234 if (NULL != paint) { |
| 217 this->fInfo.push(SkObjectParser::PaintToString(*paint)); | 235 fInfo.push(SkObjectParser::PaintToString(*paint)); |
| 218 } | 236 } |
| 219 } | 237 } |
| 220 | 238 |
| 221 void DrawBitmapNine::execute(SkCanvas* canvas) { | 239 void DrawBitmapNine::execute(SkCanvas* canvas) { |
| 222 canvas->drawBitmapNine(*this->fBitmap, *this->fCenter, *this->fDst, this->fP
aint); | 240 canvas->drawBitmapNine(fBitmap, fCenter, fDst, fPaintPtr); |
| 223 } | 241 } |
| 224 | 242 |
| 225 const SkBitmap* DrawBitmapNine::getBitmap() const { | 243 const SkBitmap* DrawBitmapNine::getBitmap() const { |
| 226 return &fResizedBitmap; | 244 return &fResizedBitmap; |
| 227 } | 245 } |
| 228 | 246 |
| 229 DrawBitmapRect::DrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, | 247 DrawBitmapRect::DrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, |
| 230 const SkRect& dst, const SkPaint* paint, | 248 const SkRect& dst, const SkPaint* paint, |
| 231 SkBitmap& resizedBitmap) { | 249 SkBitmap& resizedBitmap) { |
| 232 fBitmap = bitmap; | 250 fBitmap = bitmap; |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 this->fInfo.push(SkObjectParser::CustomTextToString("To be implemented.")); | 520 this->fInfo.push(SkObjectParser::CustomTextToString("To be implemented.")); |
| 503 } | 521 } |
| 504 | 522 |
| 505 void DrawVertices::execute(SkCanvas* canvas) { | 523 void DrawVertices::execute(SkCanvas* canvas) { |
| 506 canvas->drawVertices(this->fVmode, this->fVertexCount, this->fVertices, | 524 canvas->drawVertices(this->fVmode, this->fVertexCount, this->fVertices, |
| 507 this->fTexs, this->fColors, this->fXfermode, this->fIndices, | 525 this->fTexs, this->fColors, this->fXfermode, this->fIndices, |
| 508 this->fIndexCount, *this->fPaint); | 526 this->fIndexCount, *this->fPaint); |
| 509 } | 527 } |
| 510 | 528 |
| 511 Restore::Restore() { | 529 Restore::Restore() { |
| 512 this->fDrawType = RESTORE; | 530 fDrawType = RESTORE; |
| 513 this->fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); | 531 fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); |
| 514 } | 532 } |
| 515 | 533 |
| 516 void Restore::execute(SkCanvas* canvas) { | 534 void Restore::execute(SkCanvas* canvas) { |
| 517 canvas->restore(); | 535 canvas->restore(); |
| 518 } | 536 } |
| 519 | 537 |
| 520 void Restore::trackSaveState(int* state) { | 538 void Restore::trackSaveState(int* state) { |
| 521 (*state)--; | 539 (*state)--; |
| 522 } | 540 } |
| 523 | 541 |
| 524 Rotate::Rotate(SkScalar degrees) { | 542 Rotate::Rotate(SkScalar degrees) { |
| 525 this->fDegrees = degrees; | 543 this->fDegrees = degrees; |
| 526 this->fDrawType = ROTATE; | 544 this->fDrawType = ROTATE; |
| 527 | 545 |
| 528 this->fInfo.push(SkObjectParser::ScalarToString(degrees, "SkScalar degrees:
")); | 546 this->fInfo.push(SkObjectParser::ScalarToString(degrees, "SkScalar degrees:
")); |
| 529 } | 547 } |
| 530 | 548 |
| 531 void Rotate::execute(SkCanvas* canvas) { | 549 void Rotate::execute(SkCanvas* canvas) { |
| 532 canvas->rotate(this->fDegrees); | 550 canvas->rotate(this->fDegrees); |
| 533 } | 551 } |
| 534 | 552 |
| 535 Save::Save(SkCanvas::SaveFlags flags) { | 553 Save::Save(SkCanvas::SaveFlags flags) { |
| 536 this->fFlags = flags; | 554 fFlags = flags; |
| 537 this->fDrawType = SAVE; | 555 fDrawType = SAVE; |
| 538 this->fInfo.push(SkObjectParser::SaveFlagsToString(flags)); | 556 fInfo.push(SkObjectParser::SaveFlagsToString(flags)); |
| 539 } | 557 } |
| 540 | 558 |
| 541 void Save::execute(SkCanvas* canvas) { | 559 void Save::execute(SkCanvas* canvas) { |
| 542 canvas->save(this->fFlags); | 560 canvas->save(fFlags); |
| 543 } | 561 } |
| 544 | 562 |
| 545 void Save::trackSaveState(int* state) { | 563 void Save::trackSaveState(int* state) { |
| 546 (*state)++; | 564 (*state)++; |
| 547 } | 565 } |
| 548 | 566 |
| 549 SaveLayer::SaveLayer(const SkRect* bounds, const SkPaint* paint, | 567 SaveLayer::SaveLayer(const SkRect* bounds, const SkPaint* paint, |
| 550 SkCanvas::SaveFlags flags) { | 568 SkCanvas::SaveFlags flags) { |
| 551 this->fBounds = bounds; | 569 if (NULL != bounds) { |
| 552 this->fPaint = paint; | 570 fBounds = *bounds; |
| 553 this->fFlags = flags; | 571 } else { |
| 554 this->fDrawType = SAVE_LAYER; | 572 fBounds.setEmpty(); |
| 573 } |
| 555 | 574 |
| 556 if (bounds) this->fInfo.push(SkObjectParser::RectToString(*bounds, "Bounds:
")); | 575 if (NULL != paint) { |
| 557 if (paint) this->fInfo.push(SkObjectParser::PaintToString(*paint)); | 576 fPaint = *paint; |
| 558 this->fInfo.push(SkObjectParser::SaveFlagsToString(flags)); | 577 fPaintPtr = &fPaint; |
| 578 } else { |
| 579 fPaintPtr = NULL; |
| 580 } |
| 581 fFlags = flags; |
| 582 fDrawType = SAVE_LAYER; |
| 583 |
| 584 if (NULL != bounds) { |
| 585 fInfo.push(SkObjectParser::RectToString(*bounds, "Bounds: ")); |
| 586 } |
| 587 if (NULL != paint) { |
| 588 fInfo.push(SkObjectParser::PaintToString(*paint)); |
| 589 } |
| 590 fInfo.push(SkObjectParser::SaveFlagsToString(flags)); |
| 559 } | 591 } |
| 560 | 592 |
| 561 void SaveLayer::execute(SkCanvas* canvas) { | 593 void SaveLayer::execute(SkCanvas* canvas) { |
| 562 canvas->saveLayer(this->fBounds, this->fPaint, this->fFlags); | 594 canvas->saveLayer(fBounds.isEmpty() ? NULL : &fBounds, |
| 595 fPaintPtr, |
| 596 fFlags); |
| 563 } | 597 } |
| 564 | 598 |
| 565 void SaveLayer::trackSaveState(int* state) { | 599 void SaveLayer::trackSaveState(int* state) { |
| 566 (*state)++; | 600 (*state)++; |
| 567 } | 601 } |
| 568 | 602 |
| 569 Scale::Scale(SkScalar sx, SkScalar sy) { | 603 Scale::Scale(SkScalar sx, SkScalar sy) { |
| 570 this->fSx = sx; | 604 this->fSx = sx; |
| 571 this->fSy = sy; | 605 this->fSy = sy; |
| 572 this->fDrawType = SCALE; | 606 this->fDrawType = SCALE; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 608 this->fDy = dy; | 642 this->fDy = dy; |
| 609 this->fDrawType = TRANSLATE; | 643 this->fDrawType = TRANSLATE; |
| 610 | 644 |
| 611 this->fInfo.push(SkObjectParser::ScalarToString(dx, "SkScalar dx: ")); | 645 this->fInfo.push(SkObjectParser::ScalarToString(dx, "SkScalar dx: ")); |
| 612 this->fInfo.push(SkObjectParser::ScalarToString(dy, "SkScalar dy: ")); | 646 this->fInfo.push(SkObjectParser::ScalarToString(dy, "SkScalar dy: ")); |
| 613 } | 647 } |
| 614 | 648 |
| 615 void Translate::execute(SkCanvas* canvas) { | 649 void Translate::execute(SkCanvas* canvas) { |
| 616 canvas->translate(this->fDx, this->fDy); | 650 canvas->translate(this->fDx, this->fDy); |
| 617 } | 651 } |
| OLD | NEW |