| 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" | 
| 11 #include "SkObjectParser.h" | 11 #include "SkObjectParser.h" | 
| 12 #include "SkPicture.h" | 12 | 
| 13 #include "SkTextBlob.h" | 13 #include "SkTextBlob.h" | 
| 14 | 14 | 
| 15 // TODO(chudy): Refactor into non subclass model. | 15 // TODO(chudy): Refactor into non subclass model. | 
| 16 | 16 | 
| 17 SkDrawCommand::SkDrawCommand(OpType type) | 17 SkDrawCommand::SkDrawCommand(DrawType type) | 
| 18     : fOpType(type) | 18     : fDrawType(type) | 
| 19     , fOffset(0) | 19     , fOffset(0) | 
| 20     , fVisible(true) { | 20     , fVisible(true) { | 
| 21 } | 21 } | 
| 22 | 22 | 
| 23 SkDrawCommand::~SkDrawCommand() { | 23 SkDrawCommand::~SkDrawCommand() { | 
| 24     fInfo.deleteAll(); | 24     fInfo.deleteAll(); | 
| 25 } | 25 } | 
| 26 | 26 | 
| 27 const char* SkDrawCommand::GetCommandString(OpType type) { | 27 const char* SkDrawCommand::GetCommandString(DrawType type) { | 
| 28     switch (type) { | 28     switch (type) { | 
| 29         case kBeginCommentGroup_OpType: return "BeginCommentGroup"; | 29         case UNUSED: SkDEBUGFAIL("DrawType UNUSED\n"); break; | 
| 30         case kClipPath_OpType: return "ClipPath"; | 30         case DRAW_CLEAR: return "Clear"; | 
| 31         case kClipRegion_OpType: return "ClipRegion"; | 31         case CLIP_PATH: return "Clip Path"; | 
| 32         case kClipRect_OpType: return "ClipRect"; | 32         case CLIP_REGION: return "Clip Region"; | 
| 33         case kClipRRect_OpType: return "ClipRRect"; | 33         case CLIP_RECT: return "Clip Rect"; | 
| 34         case kComment_OpType: return "Comment"; | 34         case CLIP_RRECT: return "Clip RRect"; | 
| 35         case kConcat_OpType: return "Concat"; | 35         case CONCAT: return "Concat"; | 
| 36         case kDrawBitmap_OpType: return "DrawBitmap"; | 36         case DRAW_BITMAP: return "Draw Bitmap"; | 
| 37         case kDrawBitmapNine_OpType: return "DrawBitmapNine"; | 37         case DRAW_BITMAP_MATRIX: return "Draw Bitmap Matrix"; | 
| 38         case kDrawBitmapRect_OpType: return "DrawBitmapRect"; | 38         case DRAW_BITMAP_NINE: return "Draw Bitmap Nine"; | 
| 39         case kDrawClear_OpType: return "DrawClear"; | 39         case DRAW_BITMAP_RECT_TO_RECT: return "Draw Bitmap Rect"; | 
| 40         case kDrawDRRect_OpType: return "DrawDRRect"; | 40         case DRAW_DATA: return "Draw Data"; | 
| 41         case kDrawOval_OpType: return "DrawOval"; | 41         case DRAW_OVAL: return "Draw Oval"; | 
| 42         case kDrawPaint_OpType: return "DrawPaint"; | 42         case DRAW_PAINT: return "Draw Paint"; | 
| 43         case kDrawPatch_OpType: return "DrawPatch"; | 43         case DRAW_PATH: return "Draw Path"; | 
| 44         case kDrawPath_OpType: return "DrawPath"; | 44         case DRAW_PICTURE: return "Draw Picture"; | 
| 45         case kDrawPicture_OpType: return "DrawPicture"; | 45         case DRAW_POINTS: return "Draw Points"; | 
| 46         case kDrawPoints_OpType: return "DrawPoints"; | 46         case DRAW_POS_TEXT: return "Draw Pos Text"; | 
| 47         case kDrawPosText_OpType: return "DrawPosText"; | 47         case DRAW_POS_TEXT_H: return "Draw Pos Text H"; | 
| 48         case kDrawPosTextH_OpType: return "DrawPosTextH"; | 48         case DRAW_RECT: return "Draw Rect"; | 
| 49         case kDrawRect_OpType: return "DrawRect"; | 49         case DRAW_RRECT: return "Draw RRect"; | 
| 50         case kDrawRRect_OpType: return "DrawRRect"; | 50         case DRAW_SPRITE: return "Draw Sprite"; | 
| 51         case kDrawSprite_OpType: return "DrawSprite"; | 51         case DRAW_TEXT: return "Draw Text"; | 
| 52         case kDrawText_OpType: return "DrawText"; | 52         case DRAW_TEXT_BLOB: return "Draw Text Blob"; | 
| 53         case kDrawTextBlob_OpType: return "DrawTextBlob"; | 53         case DRAW_TEXT_ON_PATH: return "Draw Text On Path"; | 
| 54         case kDrawTextOnPath_OpType: return "DrawTextOnPath"; | 54         case DRAW_VERTICES: return "Draw Vertices"; | 
| 55         case kDrawVertices_OpType: return "DrawVertices"; | 55         case RESTORE: return "Restore"; | 
| 56         case kEndCommentGroup_OpType: return "EndCommentGroup"; | 56         case ROTATE: return "Rotate"; | 
| 57         case kRestore_OpType: return "Restore"; | 57         case SAVE: return "Save"; | 
| 58         case kSave_OpType: return "Save"; | 58         case SAVE_LAYER: return "Save Layer"; | 
| 59         case kSaveLayer_OpType: return "SaveLayer"; | 59         case SCALE: return "Scale"; | 
| 60         case kSetMatrix_OpType: return "SetMatrix"; | 60         case SET_MATRIX: return "Set Matrix"; | 
|  | 61         case SKEW: return "Skew"; | 
|  | 62         case TRANSLATE: return "Translate"; | 
|  | 63         case NOOP: return "NoOp"; | 
|  | 64         case BEGIN_COMMENT_GROUP: return "BeginCommentGroup"; | 
|  | 65         case COMMENT: return "Comment"; | 
|  | 66         case END_COMMENT_GROUP: return "EndCommentGroup"; | 
|  | 67         case DRAW_DRRECT: return "Draw DRRect"; | 
| 61         default: | 68         default: | 
| 62             SkDebugf("OpType error 0x%08x\n", type); | 69             SkDebugf("DrawType error 0x%08x\n", type); | 
| 63             SkASSERT(0); | 70             SkASSERT(0); | 
| 64             break; | 71             break; | 
| 65     } | 72     } | 
| 66     SkDEBUGFAIL("DrawType UNUSED\n"); | 73     SkDEBUGFAIL("DrawType UNUSED\n"); | 
| 67     return NULL; | 74     return NULL; | 
| 68 } | 75 } | 
| 69 | 76 | 
| 70 SkString SkDrawCommand::toString() const { | 77 SkString SkDrawCommand::toString() const { | 
| 71     return SkString(GetCommandString(fOpType)); | 78     return SkString(GetCommandString(fDrawType)); | 
| 72 } | 79 } | 
| 73 | 80 | 
| 74 SkClearCommand::SkClearCommand(SkColor color) : INHERITED(kDrawClear_OpType) { | 81 SkClearCommand::SkClearCommand(SkColor color) : INHERITED(DRAW_CLEAR) { | 
| 75     fColor = color; | 82     fColor = color; | 
| 76     fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); | 83     fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); | 
| 77 } | 84 } | 
| 78 | 85 | 
| 79 void SkClearCommand::execute(SkCanvas* canvas) const { | 86 void SkClearCommand::execute(SkCanvas* canvas) const { | 
| 80     canvas->clear(fColor); | 87     canvas->clear(fColor); | 
| 81 } | 88 } | 
| 82 | 89 | 
| 83 namespace { | 90 namespace { | 
| 84 | 91 | 
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 176     p.setStyle(SkPaint::kStroke_Style); | 183     p.setStyle(SkPaint::kStroke_Style); | 
| 177 | 184 | 
| 178     canvas->drawDRRect(outer, inner, p); | 185     canvas->drawDRRect(outer, inner, p); | 
| 179     canvas->restore(); | 186     canvas->restore(); | 
| 180 } | 187 } | 
| 181 | 188 | 
| 182 }; | 189 }; | 
| 183 | 190 | 
| 184 | 191 | 
| 185 SkClipPathCommand::SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool d
     oAA) | 192 SkClipPathCommand::SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool d
     oAA) | 
| 186     : INHERITED(kClipPath_OpType) { | 193     : INHERITED(CLIP_PATH) { | 
| 187     fPath = path; | 194     fPath = path; | 
| 188     fOp = op; | 195     fOp = op; | 
| 189     fDoAA = doAA; | 196     fDoAA = doAA; | 
| 190 | 197 | 
| 191     fInfo.push(SkObjectParser::PathToString(path)); | 198     fInfo.push(SkObjectParser::PathToString(path)); | 
| 192     fInfo.push(SkObjectParser::RegionOpToString(op)); | 199     fInfo.push(SkObjectParser::RegionOpToString(op)); | 
| 193     fInfo.push(SkObjectParser::BoolToString(doAA)); | 200     fInfo.push(SkObjectParser::BoolToString(doAA)); | 
| 194 } | 201 } | 
| 195 | 202 | 
| 196 void SkClipPathCommand::execute(SkCanvas* canvas) const { | 203 void SkClipPathCommand::execute(SkCanvas* canvas) const { | 
| 197     canvas->clipPath(fPath, fOp, fDoAA); | 204     canvas->clipPath(fPath, fOp, fDoAA); | 
| 198 } | 205 } | 
| 199 | 206 | 
| 200 bool SkClipPathCommand::render(SkCanvas* canvas) const { | 207 bool SkClipPathCommand::render(SkCanvas* canvas) const { | 
| 201     render_path(canvas, fPath); | 208     render_path(canvas, fPath); | 
| 202     return true; | 209     return true; | 
| 203 } | 210 } | 
| 204 | 211 | 
| 205 SkClipRegionCommand::SkClipRegionCommand(const SkRegion& region, SkRegion::Op op
     ) | 212 SkClipRegionCommand::SkClipRegionCommand(const SkRegion& region, SkRegion::Op op
     ) | 
| 206     : INHERITED(kClipRegion_OpType) { | 213     : INHERITED(CLIP_REGION) { | 
| 207     fRegion = region; | 214     fRegion = region; | 
| 208     fOp = op; | 215     fOp = op; | 
| 209 | 216 | 
| 210     fInfo.push(SkObjectParser::RegionToString(region)); | 217     fInfo.push(SkObjectParser::RegionToString(region)); | 
| 211     fInfo.push(SkObjectParser::RegionOpToString(op)); | 218     fInfo.push(SkObjectParser::RegionOpToString(op)); | 
| 212 } | 219 } | 
| 213 | 220 | 
| 214 void SkClipRegionCommand::execute(SkCanvas* canvas) const { | 221 void SkClipRegionCommand::execute(SkCanvas* canvas) const { | 
| 215     canvas->clipRegion(fRegion, fOp); | 222     canvas->clipRegion(fRegion, fOp); | 
| 216 } | 223 } | 
| 217 | 224 | 
| 218 SkClipRectCommand::SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool d
     oAA) | 225 SkClipRectCommand::SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool d
     oAA) | 
| 219     : INHERITED(kClipRect_OpType) { | 226     : INHERITED(CLIP_RECT) { | 
| 220     fRect = rect; | 227     fRect = rect; | 
| 221     fOp = op; | 228     fOp = op; | 
| 222     fDoAA = doAA; | 229     fDoAA = doAA; | 
| 223 | 230 | 
| 224     fInfo.push(SkObjectParser::RectToString(rect)); | 231     fInfo.push(SkObjectParser::RectToString(rect)); | 
| 225     fInfo.push(SkObjectParser::RegionOpToString(op)); | 232     fInfo.push(SkObjectParser::RegionOpToString(op)); | 
| 226     fInfo.push(SkObjectParser::BoolToString(doAA)); | 233     fInfo.push(SkObjectParser::BoolToString(doAA)); | 
| 227 } | 234 } | 
| 228 | 235 | 
| 229 void SkClipRectCommand::execute(SkCanvas* canvas) const { | 236 void SkClipRectCommand::execute(SkCanvas* canvas) const { | 
| 230     canvas->clipRect(fRect, fOp, fDoAA); | 237     canvas->clipRect(fRect, fOp, fDoAA); | 
| 231 } | 238 } | 
| 232 | 239 | 
| 233 SkClipRRectCommand::SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bo
     ol doAA) | 240 SkClipRRectCommand::SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bo
     ol doAA) | 
| 234     : INHERITED(kClipRRect_OpType) { | 241     : INHERITED(CLIP_RRECT) { | 
| 235     fRRect = rrect; | 242     fRRect = rrect; | 
| 236     fOp = op; | 243     fOp = op; | 
| 237     fDoAA = doAA; | 244     fDoAA = doAA; | 
| 238 | 245 | 
| 239     fInfo.push(SkObjectParser::RRectToString(rrect)); | 246     fInfo.push(SkObjectParser::RRectToString(rrect)); | 
| 240     fInfo.push(SkObjectParser::RegionOpToString(op)); | 247     fInfo.push(SkObjectParser::RegionOpToString(op)); | 
| 241     fInfo.push(SkObjectParser::BoolToString(doAA)); | 248     fInfo.push(SkObjectParser::BoolToString(doAA)); | 
| 242 } | 249 } | 
| 243 | 250 | 
| 244 void SkClipRRectCommand::execute(SkCanvas* canvas) const { | 251 void SkClipRRectCommand::execute(SkCanvas* canvas) const { | 
| 245     canvas->clipRRect(fRRect, fOp, fDoAA); | 252     canvas->clipRRect(fRRect, fOp, fDoAA); | 
| 246 } | 253 } | 
| 247 | 254 | 
| 248 bool SkClipRRectCommand::render(SkCanvas* canvas) const { | 255 bool SkClipRRectCommand::render(SkCanvas* canvas) const { | 
| 249     render_rrect(canvas, fRRect); | 256     render_rrect(canvas, fRRect); | 
| 250     return true; | 257     return true; | 
| 251 } | 258 } | 
| 252 | 259 | 
| 253 SkConcatCommand::SkConcatCommand(const SkMatrix& matrix) | 260 SkConcatCommand::SkConcatCommand(const SkMatrix& matrix) | 
| 254     : INHERITED(kConcat_OpType) { | 261     : INHERITED(CONCAT) { | 
| 255     fMatrix = matrix; | 262     fMatrix = matrix; | 
| 256 | 263 | 
| 257     fInfo.push(SkObjectParser::MatrixToString(matrix)); | 264     fInfo.push(SkObjectParser::MatrixToString(matrix)); | 
| 258 } | 265 } | 
| 259 | 266 | 
| 260 void SkConcatCommand::execute(SkCanvas* canvas) const { | 267 void SkConcatCommand::execute(SkCanvas* canvas) const { | 
| 261     canvas->concat(fMatrix); | 268     canvas->concat(fMatrix); | 
| 262 } | 269 } | 
| 263 | 270 | 
| 264 SkDrawBitmapCommand::SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, 
     SkScalar top, | 271 SkDrawBitmapCommand::SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, 
     SkScalar top, | 
| 265                                          const SkPaint* paint) | 272                                          const SkPaint* paint) | 
| 266     : INHERITED(kDrawBitmap_OpType) { | 273     : INHERITED(DRAW_BITMAP) { | 
| 267     fBitmap = bitmap; | 274     fBitmap = bitmap; | 
| 268     fLeft = left; | 275     fLeft = left; | 
| 269     fTop = top; | 276     fTop = top; | 
| 270     if (paint) { | 277     if (paint) { | 
| 271         fPaint = *paint; | 278         fPaint = *paint; | 
| 272         fPaintPtr = &fPaint; | 279         fPaintPtr = &fPaint; | 
| 273     } else { | 280     } else { | 
| 274         fPaintPtr = NULL; | 281         fPaintPtr = NULL; | 
| 275     } | 282     } | 
| 276 | 283 | 
| 277     fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 284     fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 
| 278     fInfo.push(SkObjectParser::ScalarToString(left, "SkScalar left: ")); | 285     fInfo.push(SkObjectParser::ScalarToString(left, "SkScalar left: ")); | 
| 279     fInfo.push(SkObjectParser::ScalarToString(top, "SkScalar top: ")); | 286     fInfo.push(SkObjectParser::ScalarToString(top, "SkScalar top: ")); | 
| 280     if (paint) { | 287     if (paint) { | 
| 281         fInfo.push(SkObjectParser::PaintToString(*paint)); | 288         fInfo.push(SkObjectParser::PaintToString(*paint)); | 
| 282     } | 289     } | 
| 283 } | 290 } | 
| 284 | 291 | 
| 285 void SkDrawBitmapCommand::execute(SkCanvas* canvas) const { | 292 void SkDrawBitmapCommand::execute(SkCanvas* canvas) const { | 
| 286     canvas->drawBitmap(fBitmap, fLeft, fTop, fPaintPtr); | 293     canvas->drawBitmap(fBitmap, fLeft, fTop, fPaintPtr); | 
| 287 } | 294 } | 
| 288 | 295 | 
| 289 bool SkDrawBitmapCommand::render(SkCanvas* canvas) const { | 296 bool SkDrawBitmapCommand::render(SkCanvas* canvas) const { | 
| 290     render_bitmap(canvas, fBitmap); | 297     render_bitmap(canvas, fBitmap); | 
| 291     return true; | 298     return true; | 
| 292 } | 299 } | 
| 293 | 300 | 
| 294 SkDrawBitmapNineCommand::SkDrawBitmapNineCommand(const SkBitmap& bitmap, const S
     kIRect& center, | 301 SkDrawBitmapNineCommand::SkDrawBitmapNineCommand(const SkBitmap& bitmap, const S
     kIRect& center, | 
| 295                                                  const SkRect& dst, const SkPain
     t* paint) | 302                                                  const SkRect& dst, const SkPain
     t* paint) | 
| 296     : INHERITED(kDrawBitmapNine_OpType) { | 303     : INHERITED(DRAW_BITMAP_NINE) { | 
| 297     fBitmap = bitmap; | 304     fBitmap = bitmap; | 
| 298     fCenter = center; | 305     fCenter = center; | 
| 299     fDst = dst; | 306     fDst = dst; | 
| 300     if (paint) { | 307     if (paint) { | 
| 301         fPaint = *paint; | 308         fPaint = *paint; | 
| 302         fPaintPtr = &fPaint; | 309         fPaintPtr = &fPaint; | 
| 303     } else { | 310     } else { | 
| 304         fPaintPtr = NULL; | 311         fPaintPtr = NULL; | 
| 305     } | 312     } | 
| 306 | 313 | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
| 317 } | 324 } | 
| 318 | 325 | 
| 319 bool SkDrawBitmapNineCommand::render(SkCanvas* canvas) const { | 326 bool SkDrawBitmapNineCommand::render(SkCanvas* canvas) const { | 
| 320     render_bitmap(canvas, fBitmap); | 327     render_bitmap(canvas, fBitmap); | 
| 321     return true; | 328     return true; | 
| 322 } | 329 } | 
| 323 | 330 | 
| 324 SkDrawBitmapRectCommand::SkDrawBitmapRectCommand(const SkBitmap& bitmap, const S
     kRect* src, | 331 SkDrawBitmapRectCommand::SkDrawBitmapRectCommand(const SkBitmap& bitmap, const S
     kRect* src, | 
| 325                                                  const SkRect& dst, const SkPain
     t* paint, | 332                                                  const SkRect& dst, const SkPain
     t* paint, | 
| 326                                                  SkCanvas::DrawBitmapRectFlags f
     lags) | 333                                                  SkCanvas::DrawBitmapRectFlags f
     lags) | 
| 327     : INHERITED(kDrawBitmapRect_OpType) { | 334     : INHERITED(DRAW_BITMAP_RECT_TO_RECT) { | 
| 328     fBitmap = bitmap; | 335     fBitmap = bitmap; | 
| 329     if (src) { | 336     if (src) { | 
| 330         fSrc = *src; | 337         fSrc = *src; | 
| 331     } else { | 338     } else { | 
| 332         fSrc.setEmpty(); | 339         fSrc.setEmpty(); | 
| 333     } | 340     } | 
| 334     fDst = dst; | 341     fDst = dst; | 
| 335 | 342 | 
| 336     if (paint) { | 343     if (paint) { | 
| 337         fPaint = *paint; | 344         fPaint = *paint; | 
| (...skipping 17 matching lines...) Expand all  Loading... | 
| 355 void SkDrawBitmapRectCommand::execute(SkCanvas* canvas) const { | 362 void SkDrawBitmapRectCommand::execute(SkCanvas* canvas) const { | 
| 356     canvas->drawBitmapRectToRect(fBitmap, this->srcRect(), fDst, fPaintPtr, fFla
     gs); | 363     canvas->drawBitmapRectToRect(fBitmap, this->srcRect(), fDst, fPaintPtr, fFla
     gs); | 
| 357 } | 364 } | 
| 358 | 365 | 
| 359 bool SkDrawBitmapRectCommand::render(SkCanvas* canvas) const { | 366 bool SkDrawBitmapRectCommand::render(SkCanvas* canvas) const { | 
| 360     render_bitmap(canvas, fBitmap, this->srcRect()); | 367     render_bitmap(canvas, fBitmap, this->srcRect()); | 
| 361     return true; | 368     return true; | 
| 362 } | 369 } | 
| 363 | 370 | 
| 364 SkBeginCommentGroupCommand::SkBeginCommentGroupCommand(const char* description) | 371 SkBeginCommentGroupCommand::SkBeginCommentGroupCommand(const char* description) | 
| 365     : INHERITED(kBeginCommentGroup_OpType) | 372     : INHERITED(BEGIN_COMMENT_GROUP) | 
| 366     , fDescription(description) { | 373     , fDescription(description) { | 
| 367     SkString* temp = new SkString; | 374     SkString* temp = new SkString; | 
| 368     temp->appendf("Description: %s", description); | 375     temp->appendf("Description: %s", description); | 
| 369     fInfo.push(temp); | 376     fInfo.push(temp); | 
| 370 } | 377 } | 
| 371 | 378 | 
| 372 SkCommentCommand::SkCommentCommand(const char* kywd, const char* value) | 379 SkCommentCommand::SkCommentCommand(const char* kywd, const char* value) | 
| 373     : INHERITED(kComment_OpType) | 380     : INHERITED(COMMENT) | 
| 374     , fKywd(kywd) | 381     , fKywd(kywd) | 
| 375     , fValue(value) { | 382     , fValue(value) { | 
| 376     SkString* temp = new SkString; | 383     SkString* temp = new SkString; | 
| 377     temp->appendf("%s: %s", kywd, value); | 384     temp->appendf("%s: %s", kywd, value); | 
| 378     fInfo.push(temp); | 385     fInfo.push(temp); | 
| 379 } | 386 } | 
| 380 | 387 | 
| 381 SkEndCommentGroupCommand::SkEndCommentGroupCommand() | 388 SkEndCommentGroupCommand::SkEndCommentGroupCommand() | 
| 382     : INHERITED(kEndCommentGroup_OpType) { | 389     : INHERITED(END_COMMENT_GROUP) { | 
| 383 } | 390 } | 
| 384 | 391 | 
| 385 SkDrawOvalCommand::SkDrawOvalCommand(const SkRect& oval, const SkPaint& paint) | 392 SkDrawOvalCommand::SkDrawOvalCommand(const SkRect& oval, const SkPaint& paint) | 
| 386     : INHERITED(kDrawOval_OpType) { | 393     : INHERITED(DRAW_OVAL) { | 
| 387     fOval = oval; | 394     fOval = oval; | 
| 388     fPaint = paint; | 395     fPaint = paint; | 
| 389 | 396 | 
| 390     fInfo.push(SkObjectParser::RectToString(oval)); | 397     fInfo.push(SkObjectParser::RectToString(oval)); | 
| 391     fInfo.push(SkObjectParser::PaintToString(paint)); | 398     fInfo.push(SkObjectParser::PaintToString(paint)); | 
| 392 } | 399 } | 
| 393 | 400 | 
| 394 void SkDrawOvalCommand::execute(SkCanvas* canvas) const { | 401 void SkDrawOvalCommand::execute(SkCanvas* canvas) const { | 
| 395     canvas->drawOval(fOval, fPaint); | 402     canvas->drawOval(fOval, fPaint); | 
| 396 } | 403 } | 
| 397 | 404 | 
| 398 bool SkDrawOvalCommand::render(SkCanvas* canvas) const { | 405 bool SkDrawOvalCommand::render(SkCanvas* canvas) const { | 
| 399     canvas->clear(0xFFFFFFFF); | 406     canvas->clear(0xFFFFFFFF); | 
| 400     canvas->save(); | 407     canvas->save(); | 
| 401 | 408 | 
| 402     xlate_and_scale_to_bounds(canvas, fOval); | 409     xlate_and_scale_to_bounds(canvas, fOval); | 
| 403 | 410 | 
| 404     SkPaint p; | 411     SkPaint p; | 
| 405     p.setColor(SK_ColorBLACK); | 412     p.setColor(SK_ColorBLACK); | 
| 406     p.setStyle(SkPaint::kStroke_Style); | 413     p.setStyle(SkPaint::kStroke_Style); | 
| 407 | 414 | 
| 408     canvas->drawOval(fOval, p); | 415     canvas->drawOval(fOval, p); | 
| 409     canvas->restore(); | 416     canvas->restore(); | 
| 410 | 417 | 
| 411     return true; | 418     return true; | 
| 412 } | 419 } | 
| 413 | 420 | 
| 414 SkDrawPaintCommand::SkDrawPaintCommand(const SkPaint& paint) | 421 SkDrawPaintCommand::SkDrawPaintCommand(const SkPaint& paint) | 
| 415     : INHERITED(kDrawPaint_OpType) { | 422     : INHERITED(DRAW_PAINT) { | 
| 416     fPaint = paint; | 423     fPaint = paint; | 
| 417 | 424 | 
| 418     fInfo.push(SkObjectParser::PaintToString(paint)); | 425     fInfo.push(SkObjectParser::PaintToString(paint)); | 
| 419 } | 426 } | 
| 420 | 427 | 
| 421 void SkDrawPaintCommand::execute(SkCanvas* canvas) const { | 428 void SkDrawPaintCommand::execute(SkCanvas* canvas) const { | 
| 422     canvas->drawPaint(fPaint); | 429     canvas->drawPaint(fPaint); | 
| 423 } | 430 } | 
| 424 | 431 | 
| 425 bool SkDrawPaintCommand::render(SkCanvas* canvas) const { | 432 bool SkDrawPaintCommand::render(SkCanvas* canvas) const { | 
| 426     canvas->clear(0xFFFFFFFF); | 433     canvas->clear(0xFFFFFFFF); | 
| 427     canvas->drawPaint(fPaint); | 434     canvas->drawPaint(fPaint); | 
| 428     return true; | 435     return true; | 
| 429 } | 436 } | 
| 430 | 437 | 
| 431 SkDrawPathCommand::SkDrawPathCommand(const SkPath& path, const SkPaint& paint) | 438 SkDrawPathCommand::SkDrawPathCommand(const SkPath& path, const SkPaint& paint) | 
| 432     : INHERITED(kDrawPath_OpType) { | 439     : INHERITED(DRAW_PATH) { | 
| 433     fPath = path; | 440     fPath = path; | 
| 434     fPaint = paint; | 441     fPaint = paint; | 
| 435 | 442 | 
| 436     fInfo.push(SkObjectParser::PathToString(path)); | 443     fInfo.push(SkObjectParser::PathToString(path)); | 
| 437     fInfo.push(SkObjectParser::PaintToString(paint)); | 444     fInfo.push(SkObjectParser::PaintToString(paint)); | 
| 438 } | 445 } | 
| 439 | 446 | 
| 440 void SkDrawPathCommand::execute(SkCanvas* canvas) const { | 447 void SkDrawPathCommand::execute(SkCanvas* canvas) const { | 
| 441     canvas->drawPath(fPath, fPaint); | 448     canvas->drawPath(fPath, fPaint); | 
| 442 } | 449 } | 
| 443 | 450 | 
| 444 bool SkDrawPathCommand::render(SkCanvas* canvas) const { | 451 bool SkDrawPathCommand::render(SkCanvas* canvas) const { | 
| 445     render_path(canvas, fPath); | 452     render_path(canvas, fPath); | 
| 446     return true; | 453     return true; | 
| 447 } | 454 } | 
| 448 | 455 | 
| 449 SkDrawPictureCommand::SkDrawPictureCommand(const SkPicture* picture, | 456 SkDrawPictureCommand::SkDrawPictureCommand(const SkPicture* picture, | 
| 450                                            const SkMatrix* matrix, | 457                                            const SkMatrix* matrix, | 
| 451                                            const SkPaint* paint) | 458                                            const SkPaint* paint) | 
| 452     : INHERITED(kDrawPicture_OpType) | 459     : INHERITED(DRAW_PICTURE) | 
| 453     , fPicture(SkRef(picture)) | 460     , fPicture(SkRef(picture)) | 
| 454     , fMatrixPtr(NULL) | 461     , fMatrixPtr(NULL) | 
| 455     , fPaintPtr(NULL) { | 462     , fPaintPtr(NULL) { | 
| 456 | 463 | 
| 457     if (matrix) { | 464     if (matrix) { | 
| 458         fMatrix = *matrix; | 465         fMatrix = *matrix; | 
| 459         fMatrixPtr = &fMatrix; | 466         fMatrixPtr = &fMatrix; | 
| 460     } | 467     } | 
| 461     if (paint) { | 468     if (paint) { | 
| 462         fPaint = *paint; | 469         fPaint = *paint; | 
| (...skipping 25 matching lines...) Expand all  Loading... | 
| 488 | 495 | 
| 489     canvas->drawPicture(fPicture.get()); | 496     canvas->drawPicture(fPicture.get()); | 
| 490 | 497 | 
| 491     canvas->restore(); | 498     canvas->restore(); | 
| 492 | 499 | 
| 493     return true; | 500     return true; | 
| 494 } | 501 } | 
| 495 | 502 | 
| 496 SkDrawPointsCommand::SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, | 503 SkDrawPointsCommand::SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, | 
| 497                                          const SkPoint pts[], const SkPaint& pai
     nt) | 504                                          const SkPoint pts[], const SkPaint& pai
     nt) | 
| 498     : INHERITED(kDrawPoints_OpType) { | 505     : INHERITED(DRAW_POINTS) { | 
| 499     fMode = mode; | 506     fMode = mode; | 
| 500     fCount = count; | 507     fCount = count; | 
| 501     fPts = new SkPoint[count]; | 508     fPts = new SkPoint[count]; | 
| 502     memcpy(fPts, pts, count * sizeof(SkPoint)); | 509     memcpy(fPts, pts, count * sizeof(SkPoint)); | 
| 503     fPaint = paint; | 510     fPaint = paint; | 
| 504 | 511 | 
| 505     fInfo.push(SkObjectParser::PointsToString(pts, count)); | 512     fInfo.push(SkObjectParser::PointsToString(pts, count)); | 
| 506     fInfo.push(SkObjectParser::ScalarToString(SkIntToScalar((unsigned int)count)
     , | 513     fInfo.push(SkObjectParser::ScalarToString(SkIntToScalar((unsigned int)count)
     , | 
| 507                                               "Points: ")); | 514                                               "Points: ")); | 
| 508     fInfo.push(SkObjectParser::PointModeToString(mode)); | 515     fInfo.push(SkObjectParser::PointModeToString(mode)); | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 531     p.setStyle(SkPaint::kStroke_Style); | 538     p.setStyle(SkPaint::kStroke_Style); | 
| 532 | 539 | 
| 533     canvas->drawPoints(fMode, fCount, fPts, p); | 540     canvas->drawPoints(fMode, fCount, fPts, p); | 
| 534     canvas->restore(); | 541     canvas->restore(); | 
| 535 | 542 | 
| 536     return true; | 543     return true; | 
| 537 } | 544 } | 
| 538 | 545 | 
| 539 SkDrawPosTextCommand::SkDrawPosTextCommand(const void* text, size_t byteLength, | 546 SkDrawPosTextCommand::SkDrawPosTextCommand(const void* text, size_t byteLength, | 
| 540                                            const SkPoint pos[], const SkPaint& p
     aint) | 547                                            const SkPoint pos[], const SkPaint& p
     aint) | 
| 541     : INHERITED(kDrawPosText_OpType) { | 548     : INHERITED(DRAW_POS_TEXT) { | 
| 542     size_t numPts = paint.countText(text, byteLength); | 549     size_t numPts = paint.countText(text, byteLength); | 
| 543 | 550 | 
| 544     fText = new char[byteLength]; | 551     fText = new char[byteLength]; | 
| 545     memcpy(fText, text, byteLength); | 552     memcpy(fText, text, byteLength); | 
| 546     fByteLength = byteLength; | 553     fByteLength = byteLength; | 
| 547 | 554 | 
| 548     fPos = new SkPoint[numPts]; | 555     fPos = new SkPoint[numPts]; | 
| 549     memcpy(fPos, pos, numPts * sizeof(SkPoint)); | 556     memcpy(fPos, pos, numPts * sizeof(SkPoint)); | 
| 550 | 557 | 
| 551     fPaint = paint; | 558     fPaint = paint; | 
| 552 | 559 | 
| 553     fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncod
     ing())); | 560     fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncod
     ing())); | 
| 554     // TODO(chudy): Test that this works. | 561     // TODO(chudy): Test that this works. | 
| 555     fInfo.push(SkObjectParser::PointsToString(pos, 1)); | 562     fInfo.push(SkObjectParser::PointsToString(pos, 1)); | 
| 556     fInfo.push(SkObjectParser::PaintToString(paint)); | 563     fInfo.push(SkObjectParser::PaintToString(paint)); | 
| 557 } | 564 } | 
| 558 | 565 | 
| 559 void SkDrawPosTextCommand::execute(SkCanvas* canvas) const { | 566 void SkDrawPosTextCommand::execute(SkCanvas* canvas) const { | 
| 560     canvas->drawPosText(fText, fByteLength, fPos, fPaint); | 567     canvas->drawPosText(fText, fByteLength, fPos, fPaint); | 
| 561 } | 568 } | 
| 562 | 569 | 
| 563 | 570 | 
| 564 SkDrawPosTextHCommand::SkDrawPosTextHCommand(const void* text, size_t byteLength
     , | 571 SkDrawPosTextHCommand::SkDrawPosTextHCommand(const void* text, size_t byteLength
     , | 
| 565                                              const SkScalar xpos[], SkScalar con
     stY, | 572                                              const SkScalar xpos[], SkScalar con
     stY, | 
| 566                                              const SkPaint& paint) | 573                                              const SkPaint& paint) | 
| 567     : INHERITED(kDrawPosTextH_OpType) { | 574     : INHERITED(DRAW_POS_TEXT_H) { | 
| 568     size_t numPts = paint.countText(text, byteLength); | 575     size_t numPts = paint.countText(text, byteLength); | 
| 569 | 576 | 
| 570     fText = new char[byteLength]; | 577     fText = new char[byteLength]; | 
| 571     memcpy(fText, text, byteLength); | 578     memcpy(fText, text, byteLength); | 
| 572     fByteLength = byteLength; | 579     fByteLength = byteLength; | 
| 573 | 580 | 
| 574     fXpos = new SkScalar[numPts]; | 581     fXpos = new SkScalar[numPts]; | 
| 575     memcpy(fXpos, xpos, numPts * sizeof(SkScalar)); | 582     memcpy(fXpos, xpos, numPts * sizeof(SkScalar)); | 
| 576 | 583 | 
| 577     fConstY = constY; | 584     fConstY = constY; | 
| 578     fPaint = paint; | 585     fPaint = paint; | 
| 579 | 586 | 
| 580     fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncod
     ing())); | 587     fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncod
     ing())); | 
| 581     fInfo.push(SkObjectParser::ScalarToString(xpos[0], "XPOS: ")); | 588     fInfo.push(SkObjectParser::ScalarToString(xpos[0], "XPOS: ")); | 
| 582     fInfo.push(SkObjectParser::ScalarToString(constY, "SkScalar constY: ")); | 589     fInfo.push(SkObjectParser::ScalarToString(constY, "SkScalar constY: ")); | 
| 583     fInfo.push(SkObjectParser::PaintToString(paint)); | 590     fInfo.push(SkObjectParser::PaintToString(paint)); | 
| 584 } | 591 } | 
| 585 | 592 | 
| 586 void SkDrawPosTextHCommand::execute(SkCanvas* canvas) const { | 593 void SkDrawPosTextHCommand::execute(SkCanvas* canvas) const { | 
| 587     canvas->drawPosTextH(fText, fByteLength, fXpos, fConstY, fPaint); | 594     canvas->drawPosTextH(fText, fByteLength, fXpos, fConstY, fPaint); | 
| 588 } | 595 } | 
| 589 | 596 | 
| 590 SkDrawTextBlobCommand::SkDrawTextBlobCommand(const SkTextBlob* blob, SkScalar x,
      SkScalar y, | 597 SkDrawTextBlobCommand::SkDrawTextBlobCommand(const SkTextBlob* blob, SkScalar x,
      SkScalar y, | 
| 591                                              const SkPaint& paint) | 598                                              const SkPaint& paint) | 
| 592     : INHERITED(kDrawTextBlob_OpType) | 599     : INHERITED(DRAW_TEXT_BLOB) | 
| 593     , fBlob(blob) | 600     , fBlob(blob) | 
| 594     , fXPos(x) | 601     , fXPos(x) | 
| 595     , fYPos(y) | 602     , fYPos(y) | 
| 596     , fPaint(paint) { | 603     , fPaint(paint) { | 
| 597 | 604 | 
| 598     blob->ref(); | 605     blob->ref(); | 
| 599 | 606 | 
| 600     // FIXME: push blob info | 607     // FIXME: push blob info | 
| 601     fInfo.push(SkObjectParser::ScalarToString(x, "XPOS: ")); | 608     fInfo.push(SkObjectParser::ScalarToString(x, "XPOS: ")); | 
| 602     fInfo.push(SkObjectParser::ScalarToString(y, "YPOS: ")); | 609     fInfo.push(SkObjectParser::ScalarToString(y, "YPOS: ")); | 
| (...skipping 12 matching lines...) Expand all  Loading... | 
| 615     SkRect bounds = fBlob->bounds().makeOffset(fXPos, fYPos); | 622     SkRect bounds = fBlob->bounds().makeOffset(fXPos, fYPos); | 
| 616     xlate_and_scale_to_bounds(canvas, bounds); | 623     xlate_and_scale_to_bounds(canvas, bounds); | 
| 617 | 624 | 
| 618     canvas->drawTextBlob(fBlob.get(), fXPos, fYPos, fPaint); | 625     canvas->drawTextBlob(fBlob.get(), fXPos, fYPos, fPaint); | 
| 619 | 626 | 
| 620     canvas->restore(); | 627     canvas->restore(); | 
| 621 | 628 | 
| 622     return true; | 629     return true; | 
| 623 } | 630 } | 
| 624 | 631 | 
| 625 SkDrawPatchCommand::SkDrawPatchCommand(const SkPoint cubics[12], const SkColor c
     olors[4], |  | 
| 626                                        const SkPoint texCoords[4], SkXfermode* x
     fermode, |  | 
| 627                                        const SkPaint& paint) |  | 
| 628     : INHERITED(kDrawPatch_OpType) { |  | 
| 629     memcpy(fCubics, cubics, sizeof(fCubics)); |  | 
| 630     memcpy(fColors, colors, sizeof(fColors)); |  | 
| 631     memcpy(fTexCoords, texCoords, sizeof(fTexCoords)); |  | 
| 632     fXfermode.reset(xfermode); |  | 
| 633     fPaint = paint; |  | 
| 634 |  | 
| 635     fInfo.push(SkObjectParser::PaintToString(paint)); |  | 
| 636 } |  | 
| 637 |  | 
| 638 void SkDrawPatchCommand::execute(SkCanvas* canvas) const { |  | 
| 639     canvas->drawPatch(fCubics, fColors, fTexCoords, fXfermode, fPaint); |  | 
| 640 } |  | 
| 641 |  | 
| 642 SkDrawRectCommand::SkDrawRectCommand(const SkRect& rect, const SkPaint& paint) | 632 SkDrawRectCommand::SkDrawRectCommand(const SkRect& rect, const SkPaint& paint) | 
| 643     : INHERITED(kDrawRect_OpType) { | 633     : INHERITED(DRAW_RECT) { | 
| 644     fRect = rect; | 634     fRect = rect; | 
| 645     fPaint = paint; | 635     fPaint = paint; | 
| 646 | 636 | 
| 647     fInfo.push(SkObjectParser::RectToString(rect)); | 637     fInfo.push(SkObjectParser::RectToString(rect)); | 
| 648     fInfo.push(SkObjectParser::PaintToString(paint)); | 638     fInfo.push(SkObjectParser::PaintToString(paint)); | 
| 649 } | 639 } | 
| 650 | 640 | 
| 651 void SkDrawRectCommand::execute(SkCanvas* canvas) const { | 641 void SkDrawRectCommand::execute(SkCanvas* canvas) const { | 
| 652     canvas->drawRect(fRect, fPaint); | 642     canvas->drawRect(fRect, fPaint); | 
| 653 } | 643 } | 
| 654 | 644 | 
| 655 SkDrawRRectCommand::SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& pain
     t) | 645 SkDrawRRectCommand::SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& pain
     t) | 
| 656     : INHERITED(kDrawRRect_OpType) { | 646     : INHERITED(DRAW_RRECT) { | 
| 657     fRRect = rrect; | 647     fRRect = rrect; | 
| 658     fPaint = paint; | 648     fPaint = paint; | 
| 659 | 649 | 
| 660     fInfo.push(SkObjectParser::RRectToString(rrect)); | 650     fInfo.push(SkObjectParser::RRectToString(rrect)); | 
| 661     fInfo.push(SkObjectParser::PaintToString(paint)); | 651     fInfo.push(SkObjectParser::PaintToString(paint)); | 
| 662 } | 652 } | 
| 663 | 653 | 
| 664 void SkDrawRRectCommand::execute(SkCanvas* canvas) const { | 654 void SkDrawRRectCommand::execute(SkCanvas* canvas) const { | 
| 665     canvas->drawRRect(fRRect, fPaint); | 655     canvas->drawRRect(fRRect, fPaint); | 
| 666 } | 656 } | 
| 667 | 657 | 
| 668 bool SkDrawRRectCommand::render(SkCanvas* canvas) const { | 658 bool SkDrawRRectCommand::render(SkCanvas* canvas) const { | 
| 669     render_rrect(canvas, fRRect); | 659     render_rrect(canvas, fRRect); | 
| 670     return true; | 660     return true; | 
| 671 } | 661 } | 
| 672 | 662 | 
| 673 SkDrawDRRectCommand::SkDrawDRRectCommand(const SkRRect& outer, | 663 SkDrawDRRectCommand::SkDrawDRRectCommand(const SkRRect& outer, | 
| 674                                          const SkRRect& inner, | 664                                          const SkRRect& inner, | 
| 675                                          const SkPaint& paint) | 665                                          const SkPaint& paint) | 
| 676     : INHERITED(kDrawDRRect_OpType) { | 666     : INHERITED(DRAW_DRRECT) { | 
| 677     fOuter = outer; | 667     fOuter = outer; | 
| 678     fInner = inner; | 668     fInner = inner; | 
| 679     fPaint = paint; | 669     fPaint = paint; | 
| 680 | 670 | 
| 681     fInfo.push(SkObjectParser::RRectToString(outer)); | 671     fInfo.push(SkObjectParser::RRectToString(outer)); | 
| 682     fInfo.push(SkObjectParser::RRectToString(inner)); | 672     fInfo.push(SkObjectParser::RRectToString(inner)); | 
| 683     fInfo.push(SkObjectParser::PaintToString(paint)); | 673     fInfo.push(SkObjectParser::PaintToString(paint)); | 
| 684 } | 674 } | 
| 685 | 675 | 
| 686 void SkDrawDRRectCommand::execute(SkCanvas* canvas) const { | 676 void SkDrawDRRectCommand::execute(SkCanvas* canvas) const { | 
| 687     canvas->drawDRRect(fOuter, fInner, fPaint); | 677     canvas->drawDRRect(fOuter, fInner, fPaint); | 
| 688 } | 678 } | 
| 689 | 679 | 
| 690 bool SkDrawDRRectCommand::render(SkCanvas* canvas) const { | 680 bool SkDrawDRRectCommand::render(SkCanvas* canvas) const { | 
| 691     render_drrect(canvas, fOuter, fInner); | 681     render_drrect(canvas, fOuter, fInner); | 
| 692     return true; | 682     return true; | 
| 693 } | 683 } | 
| 694 | 684 | 
| 695 SkDrawSpriteCommand::SkDrawSpriteCommand(const SkBitmap& bitmap, int left, int t
     op, | 685 SkDrawSpriteCommand::SkDrawSpriteCommand(const SkBitmap& bitmap, int left, int t
     op, | 
| 696                                          const SkPaint* paint) | 686                                          const SkPaint* paint) | 
| 697     : INHERITED(kDrawSprite_OpType) { | 687     : INHERITED(DRAW_SPRITE) { | 
| 698     fBitmap = bitmap; | 688     fBitmap = bitmap; | 
| 699     fLeft = left; | 689     fLeft = left; | 
| 700     fTop = top; | 690     fTop = top; | 
| 701     if (paint) { | 691     if (paint) { | 
| 702         fPaint = *paint; | 692         fPaint = *paint; | 
| 703         fPaintPtr = &fPaint; | 693         fPaintPtr = &fPaint; | 
| 704     } else { | 694     } else { | 
| 705         fPaintPtr = NULL; | 695         fPaintPtr = NULL; | 
| 706     } | 696     } | 
| 707 | 697 | 
| 708     fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 698     fInfo.push(SkObjectParser::BitmapToString(bitmap)); | 
| 709     fInfo.push(SkObjectParser::IntToString(left, "Left: ")); | 699     fInfo.push(SkObjectParser::IntToString(left, "Left: ")); | 
| 710     fInfo.push(SkObjectParser::IntToString(top, "Top: ")); | 700     fInfo.push(SkObjectParser::IntToString(top, "Top: ")); | 
| 711     if (paint) { | 701     if (paint) { | 
| 712         fInfo.push(SkObjectParser::PaintToString(*paint)); | 702         fInfo.push(SkObjectParser::PaintToString(*paint)); | 
| 713     } | 703     } | 
| 714 } | 704 } | 
| 715 | 705 | 
| 716 void SkDrawSpriteCommand::execute(SkCanvas* canvas) const { | 706 void SkDrawSpriteCommand::execute(SkCanvas* canvas) const { | 
| 717     canvas->drawSprite(fBitmap, fLeft, fTop, fPaintPtr); | 707     canvas->drawSprite(fBitmap, fLeft, fTop, fPaintPtr); | 
| 718 } | 708 } | 
| 719 | 709 | 
| 720 bool SkDrawSpriteCommand::render(SkCanvas* canvas) const { | 710 bool SkDrawSpriteCommand::render(SkCanvas* canvas) const { | 
| 721     render_bitmap(canvas, fBitmap); | 711     render_bitmap(canvas, fBitmap); | 
| 722     return true; | 712     return true; | 
| 723 } | 713 } | 
| 724 | 714 | 
| 725 SkDrawTextCommand::SkDrawTextCommand(const void* text, size_t byteLength, SkScal
     ar x, SkScalar y, | 715 SkDrawTextCommand::SkDrawTextCommand(const void* text, size_t byteLength, SkScal
     ar x, SkScalar y, | 
| 726                                      const SkPaint& paint) | 716                                      const SkPaint& paint) | 
| 727     : INHERITED(kDrawText_OpType) { | 717     : INHERITED(DRAW_TEXT) { | 
| 728     fText = new char[byteLength]; | 718     fText = new char[byteLength]; | 
| 729     memcpy(fText, text, byteLength); | 719     memcpy(fText, text, byteLength); | 
| 730     fByteLength = byteLength; | 720     fByteLength = byteLength; | 
| 731     fX = x; | 721     fX = x; | 
| 732     fY = y; | 722     fY = y; | 
| 733     fPaint = paint; | 723     fPaint = paint; | 
| 734 | 724 | 
| 735     fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncod
     ing())); | 725     fInfo.push(SkObjectParser::TextToString(text, byteLength, paint.getTextEncod
     ing())); | 
| 736     fInfo.push(SkObjectParser::ScalarToString(x, "SkScalar x: ")); | 726     fInfo.push(SkObjectParser::ScalarToString(x, "SkScalar x: ")); | 
| 737     fInfo.push(SkObjectParser::ScalarToString(y, "SkScalar y: ")); | 727     fInfo.push(SkObjectParser::ScalarToString(y, "SkScalar y: ")); | 
| 738     fInfo.push(SkObjectParser::PaintToString(paint)); | 728     fInfo.push(SkObjectParser::PaintToString(paint)); | 
| 739 } | 729 } | 
| 740 | 730 | 
| 741 void SkDrawTextCommand::execute(SkCanvas* canvas) const { | 731 void SkDrawTextCommand::execute(SkCanvas* canvas) const { | 
| 742     canvas->drawText(fText, fByteLength, fX, fY, fPaint); | 732     canvas->drawText(fText, fByteLength, fX, fY, fPaint); | 
| 743 } | 733 } | 
| 744 | 734 | 
| 745 SkDrawTextOnPathCommand::SkDrawTextOnPathCommand(const void* text, size_t byteLe
     ngth, | 735 SkDrawTextOnPathCommand::SkDrawTextOnPathCommand(const void* text, size_t byteLe
     ngth, | 
| 746                                                  const SkPath& path, const SkMat
     rix* matrix, | 736                                                  const SkPath& path, const SkMat
     rix* matrix, | 
| 747                                                  const SkPaint& paint) | 737                                                  const SkPaint& paint) | 
| 748     : INHERITED(kDrawTextOnPath_OpType) { | 738     : INHERITED(DRAW_TEXT_ON_PATH) { | 
| 749     fText = new char[byteLength]; | 739     fText = new char[byteLength]; | 
| 750     memcpy(fText, text, byteLength); | 740     memcpy(fText, text, byteLength); | 
| 751     fByteLength = byteLength; | 741     fByteLength = byteLength; | 
| 752     fPath = path; | 742     fPath = path; | 
| 753     if (matrix) { | 743     if (matrix) { | 
| 754         fMatrix = *matrix; | 744         fMatrix = *matrix; | 
| 755     } else { | 745     } else { | 
| 756         fMatrix.setIdentity(); | 746         fMatrix.setIdentity(); | 
| 757     } | 747     } | 
| 758     fPaint = paint; | 748     fPaint = paint; | 
| (...skipping 10 matching lines...) Expand all  Loading... | 
| 769     canvas->drawTextOnPath(fText, fByteLength, fPath, | 759     canvas->drawTextOnPath(fText, fByteLength, fPath, | 
| 770                            fMatrix.isIdentity() ? NULL : &fMatrix, | 760                            fMatrix.isIdentity() ? NULL : &fMatrix, | 
| 771                            fPaint); | 761                            fPaint); | 
| 772 } | 762 } | 
| 773 | 763 | 
| 774 SkDrawVerticesCommand::SkDrawVerticesCommand(SkCanvas::VertexMode vmode, int ver
     texCount, | 764 SkDrawVerticesCommand::SkDrawVerticesCommand(SkCanvas::VertexMode vmode, int ver
     texCount, | 
| 775                                              const SkPoint vertices[], const SkP
     oint texs[], | 765                                              const SkPoint vertices[], const SkP
     oint texs[], | 
| 776                                              const SkColor colors[], SkXfermode*
      xfermode, | 766                                              const SkColor colors[], SkXfermode*
      xfermode, | 
| 777                                              const uint16_t indices[], int index
     Count, | 767                                              const uint16_t indices[], int index
     Count, | 
| 778                                              const SkPaint& paint) | 768                                              const SkPaint& paint) | 
| 779     : INHERITED(kDrawVertices_OpType) { | 769     : INHERITED(DRAW_VERTICES) { | 
| 780     fVmode = vmode; | 770     fVmode = vmode; | 
| 781 | 771 | 
| 782     fVertexCount = vertexCount; | 772     fVertexCount = vertexCount; | 
| 783 | 773 | 
| 784     fVertices = new SkPoint[vertexCount]; | 774     fVertices = new SkPoint[vertexCount]; | 
| 785     memcpy(fVertices, vertices, vertexCount * sizeof(SkPoint)); | 775     memcpy(fVertices, vertices, vertexCount * sizeof(SkPoint)); | 
| 786 | 776 | 
| 787     if (texs) { | 777     if (texs) { | 
| 788         fTexs = new SkPoint[vertexCount]; | 778         fTexs = new SkPoint[vertexCount]; | 
| 789         memcpy(fTexs, texs, vertexCount * sizeof(SkPoint)); | 779         memcpy(fTexs, texs, vertexCount * sizeof(SkPoint)); | 
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 826     delete [] fIndices; | 816     delete [] fIndices; | 
| 827 } | 817 } | 
| 828 | 818 | 
| 829 void SkDrawVerticesCommand::execute(SkCanvas* canvas) const { | 819 void SkDrawVerticesCommand::execute(SkCanvas* canvas) const { | 
| 830     canvas->drawVertices(fVmode, fVertexCount, fVertices, | 820     canvas->drawVertices(fVmode, fVertexCount, fVertices, | 
| 831                          fTexs, fColors, fXfermode, fIndices, | 821                          fTexs, fColors, fXfermode, fIndices, | 
| 832                          fIndexCount, fPaint); | 822                          fIndexCount, fPaint); | 
| 833 } | 823 } | 
| 834 | 824 | 
| 835 SkRestoreCommand::SkRestoreCommand() | 825 SkRestoreCommand::SkRestoreCommand() | 
| 836     : INHERITED(kRestore_OpType) { | 826     : INHERITED(RESTORE) { | 
| 837     fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); | 827     fInfo.push(SkObjectParser::CustomTextToString("No Parameters")); | 
| 838 } | 828 } | 
| 839 | 829 | 
| 840 void SkRestoreCommand::execute(SkCanvas* canvas) const { | 830 void SkRestoreCommand::execute(SkCanvas* canvas) const { | 
| 841     canvas->restore(); | 831     canvas->restore(); | 
| 842 } | 832 } | 
| 843 | 833 | 
|  | 834 SkRotateCommand::SkRotateCommand(SkScalar degrees) | 
|  | 835     : INHERITED(ROTATE) { | 
|  | 836     fDegrees = degrees; | 
|  | 837 | 
|  | 838     fInfo.push(SkObjectParser::ScalarToString(degrees, "SkScalar degrees: ")); | 
|  | 839 } | 
|  | 840 | 
|  | 841 void SkRotateCommand::execute(SkCanvas* canvas) const { | 
|  | 842     canvas->rotate(fDegrees); | 
|  | 843 } | 
|  | 844 | 
| 844 SkSaveCommand::SkSaveCommand() | 845 SkSaveCommand::SkSaveCommand() | 
| 845     : INHERITED(kSave_OpType) { | 846     : INHERITED(SAVE) { | 
| 846 } | 847 } | 
| 847 | 848 | 
| 848 void SkSaveCommand::execute(SkCanvas* canvas) const { | 849 void SkSaveCommand::execute(SkCanvas* canvas) const { | 
| 849     canvas->save(); | 850     canvas->save(); | 
| 850 } | 851 } | 
| 851 | 852 | 
| 852 SkSaveLayerCommand::SkSaveLayerCommand(const SkRect* bounds, const SkPaint* pain
     t, | 853 SkSaveLayerCommand::SkSaveLayerCommand(const SkRect* bounds, const SkPaint* pain
     t, | 
| 853                                        SkCanvas::SaveFlags flags) | 854                                        SkCanvas::SaveFlags flags) | 
| 854     : INHERITED(kSaveLayer_OpType) { | 855     : INHERITED(SAVE_LAYER) { | 
| 855     if (bounds) { | 856     if (bounds) { | 
| 856         fBounds = *bounds; | 857         fBounds = *bounds; | 
| 857     } else { | 858     } else { | 
| 858         fBounds.setEmpty(); | 859         fBounds.setEmpty(); | 
| 859     } | 860     } | 
| 860 | 861 | 
| 861     if (paint) { | 862     if (paint) { | 
| 862         fPaint = *paint; | 863         fPaint = *paint; | 
| 863         fPaintPtr = &fPaint; | 864         fPaintPtr = &fPaint; | 
| 864     } else { | 865     } else { | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 878 void SkSaveLayerCommand::execute(SkCanvas* canvas) const { | 879 void SkSaveLayerCommand::execute(SkCanvas* canvas) const { | 
| 879     canvas->saveLayer(fBounds.isEmpty() ? NULL : &fBounds, | 880     canvas->saveLayer(fBounds.isEmpty() ? NULL : &fBounds, | 
| 880                       fPaintPtr, | 881                       fPaintPtr, | 
| 881                       fFlags); | 882                       fFlags); | 
| 882 } | 883 } | 
| 883 | 884 | 
| 884 void SkSaveLayerCommand::vizExecute(SkCanvas* canvas) const { | 885 void SkSaveLayerCommand::vizExecute(SkCanvas* canvas) const { | 
| 885     canvas->save(); | 886     canvas->save(); | 
| 886 } | 887 } | 
| 887 | 888 | 
|  | 889 SkScaleCommand::SkScaleCommand(SkScalar sx, SkScalar sy) | 
|  | 890     : INHERITED(SCALE) { | 
|  | 891     fSx = sx; | 
|  | 892     fSy = sy; | 
|  | 893 | 
|  | 894     fInfo.push(SkObjectParser::ScalarToString(sx, "SkScalar sx: ")); | 
|  | 895     fInfo.push(SkObjectParser::ScalarToString(sy, "SkScalar sy: ")); | 
|  | 896 } | 
|  | 897 | 
|  | 898 void SkScaleCommand::execute(SkCanvas* canvas) const { | 
|  | 899     canvas->scale(fSx, fSy); | 
|  | 900 } | 
|  | 901 | 
| 888 SkSetMatrixCommand::SkSetMatrixCommand(const SkMatrix& matrix) | 902 SkSetMatrixCommand::SkSetMatrixCommand(const SkMatrix& matrix) | 
| 889     : INHERITED(kSetMatrix_OpType) { | 903     : INHERITED(SET_MATRIX) { | 
| 890     fUserMatrix.reset(); | 904     fUserMatrix.reset(); | 
| 891     fMatrix = matrix; | 905     fMatrix = matrix; | 
| 892 | 906 | 
| 893     fInfo.push(SkObjectParser::MatrixToString(matrix)); | 907     fInfo.push(SkObjectParser::MatrixToString(matrix)); | 
| 894 } | 908 } | 
| 895 | 909 | 
| 896 void SkSetMatrixCommand::setUserMatrix(const SkMatrix& userMatrix) { | 910 void SkSetMatrixCommand::setUserMatrix(const SkMatrix& userMatrix) { | 
| 897     fUserMatrix = userMatrix; | 911     fUserMatrix = userMatrix; | 
| 898 } | 912 } | 
| 899 | 913 | 
| 900 void SkSetMatrixCommand::execute(SkCanvas* canvas) const { | 914 void SkSetMatrixCommand::execute(SkCanvas* canvas) const { | 
| 901     SkMatrix temp = SkMatrix::Concat(fUserMatrix, fMatrix); | 915     SkMatrix temp = SkMatrix::Concat(fUserMatrix, fMatrix); | 
| 902     canvas->setMatrix(temp); | 916     canvas->setMatrix(temp); | 
| 903 } | 917 } | 
| 904 | 918 | 
|  | 919 SkSkewCommand::SkSkewCommand(SkScalar sx, SkScalar sy) | 
|  | 920     : INHERITED(SKEW) { | 
|  | 921     fSx = sx; | 
|  | 922     fSy = sy; | 
|  | 923 | 
|  | 924     fInfo.push(SkObjectParser::ScalarToString(sx, "SkScalar sx: ")); | 
|  | 925     fInfo.push(SkObjectParser::ScalarToString(sy, "SkScalar sy: ")); | 
|  | 926 } | 
|  | 927 | 
|  | 928 void SkSkewCommand::execute(SkCanvas* canvas) const { | 
|  | 929     canvas->skew(fSx, fSy); | 
|  | 930 } | 
|  | 931 | 
|  | 932 SkTranslateCommand::SkTranslateCommand(SkScalar dx, SkScalar dy) | 
|  | 933     : INHERITED(TRANSLATE) { | 
|  | 934     fDx = dx; | 
|  | 935     fDy = dy; | 
|  | 936 | 
|  | 937     fInfo.push(SkObjectParser::ScalarToString(dx, "SkScalar dx: ")); | 
|  | 938     fInfo.push(SkObjectParser::ScalarToString(dy, "SkScalar dy: ")); | 
|  | 939 } | 
|  | 940 | 
|  | 941 void SkTranslateCommand::execute(SkCanvas* canvas) const { | 
|  | 942     canvas->translate(fDx, fDy); | 
|  | 943 } | 
|  | 944 | 
| OLD | NEW | 
|---|