| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkCanvas.h" | 8 #include "SkCanvas.h" |
| 9 #include "SkPatchUtils.h" | 9 #include "SkPatchUtils.h" |
| 10 #include "SkPictureData.h" | 10 #include "SkPictureData.h" |
| (...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 case DRAW_DRAWABLE: | 260 case DRAW_DRAWABLE: |
| 261 canvas->drawDrawable(fPictureData->getDrawable(reader)); | 261 canvas->drawDrawable(fPictureData->getDrawable(reader)); |
| 262 break; | 262 break; |
| 263 case DRAW_DRAWABLE_MATRIX: { | 263 case DRAW_DRAWABLE_MATRIX: { |
| 264 SkMatrix matrix; | 264 SkMatrix matrix; |
| 265 reader->readMatrix(&matrix); | 265 reader->readMatrix(&matrix); |
| 266 SkDrawable* drawable = fPictureData->getDrawable(reader); | 266 SkDrawable* drawable = fPictureData->getDrawable(reader); |
| 267 canvas->drawDrawable(drawable, &matrix); | 267 canvas->drawDrawable(drawable, &matrix); |
| 268 } break; | 268 } break; |
| 269 case DRAW_DRRECT: { | 269 case DRAW_DRRECT: { |
| 270 const SkPaint& paint = *fPictureData->getPaint(reader); | 270 const SkPaint* paint = fPictureData->getPaint(reader); |
| 271 SkRRect outer, inner; | 271 SkRRect outer, inner; |
| 272 reader->readRRect(&outer); | 272 reader->readRRect(&outer); |
| 273 reader->readRRect(&inner); | 273 reader->readRRect(&inner); |
| 274 canvas->drawDRRect(outer, inner, paint); | 274 if (paint) { |
| 275 canvas->drawDRRect(outer, inner, *paint); |
| 276 } |
| 275 } break; | 277 } break; |
| 276 case BEGIN_COMMENT_GROUP: { | 278 case BEGIN_COMMENT_GROUP: { |
| 277 SkString tmp; | 279 SkString tmp; |
| 278 reader->readString(&tmp); | 280 reader->readString(&tmp); |
| 279 // deprecated (M44) | 281 // deprecated (M44) |
| 280 break; | 282 break; |
| 281 } | 283 } |
| 282 case COMMENT: { | 284 case COMMENT: { |
| 283 SkString tmp; | 285 SkString tmp; |
| 284 reader->readString(&tmp); | 286 reader->readString(&tmp); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 315 reader->readRect(&dst); // required | 317 reader->readRect(&dst); // required |
| 316 // DRAW_IMAGE_RECT_STRICT assumes this constraint, and doesn't store
it | 318 // DRAW_IMAGE_RECT_STRICT assumes this constraint, and doesn't store
it |
| 317 SkCanvas::SrcRectConstraint constraint = SkCanvas::kStrict_SrcRectCo
nstraint; | 319 SkCanvas::SrcRectConstraint constraint = SkCanvas::kStrict_SrcRectCo
nstraint; |
| 318 if (DRAW_IMAGE_RECT == op) { | 320 if (DRAW_IMAGE_RECT == op) { |
| 319 // newer op-code stores the constraint explicitly | 321 // newer op-code stores the constraint explicitly |
| 320 constraint = (SkCanvas::SrcRectConstraint)reader->readInt(); | 322 constraint = (SkCanvas::SrcRectConstraint)reader->readInt(); |
| 321 } | 323 } |
| 322 canvas->legacy_drawImageRect(image, src, dst, paint, constraint); | 324 canvas->legacy_drawImageRect(image, src, dst, paint, constraint); |
| 323 } break; | 325 } break; |
| 324 case DRAW_OVAL: { | 326 case DRAW_OVAL: { |
| 325 const SkPaint& paint = *fPictureData->getPaint(reader); | 327 const SkPaint* paint = fPictureData->getPaint(reader); |
| 326 SkRect rect; | 328 SkRect rect; |
| 327 reader->readRect(&rect); | 329 reader->readRect(&rect); |
| 328 canvas->drawOval(rect, paint); | 330 if (paint) { |
| 331 canvas->drawOval(rect, *paint); |
| 332 } |
| 329 } break; | 333 } break; |
| 330 case DRAW_PAINT: | 334 case DRAW_PAINT: { |
| 331 canvas->drawPaint(*fPictureData->getPaint(reader)); | 335 const SkPaint* paint = fPictureData->getPaint(reader); |
| 332 break; | 336 if (paint) { |
| 337 canvas->drawPaint(*paint); |
| 338 } |
| 339 } break; |
| 333 case DRAW_PATCH: { | 340 case DRAW_PATCH: { |
| 334 const SkPaint& paint = *fPictureData->getPaint(reader); | 341 const SkPaint* paint = fPictureData->getPaint(reader); |
| 335 | 342 |
| 336 const SkPoint* cubics = (const SkPoint*)reader->skip(SkPatchUtils::k
NumCtrlPts * | 343 const SkPoint* cubics = (const SkPoint*)reader->skip(SkPatchUtils::k
NumCtrlPts * |
| 337 sizeof(SkPoint)
); | 344 sizeof(SkPoint)
); |
| 338 uint32_t flag = reader->readInt(); | 345 uint32_t flag = reader->readInt(); |
| 339 const SkColor* colors = nullptr; | 346 const SkColor* colors = nullptr; |
| 340 if (flag & DRAW_VERTICES_HAS_COLORS) { | 347 if (flag & DRAW_VERTICES_HAS_COLORS) { |
| 341 colors = (const SkColor*)reader->skip(SkPatchUtils::kNumCorners
* sizeof(SkColor)); | 348 colors = (const SkColor*)reader->skip(SkPatchUtils::kNumCorners
* sizeof(SkColor)); |
| 342 } | 349 } |
| 343 const SkPoint* texCoords = nullptr; | 350 const SkPoint* texCoords = nullptr; |
| 344 if (flag & DRAW_VERTICES_HAS_TEXS) { | 351 if (flag & DRAW_VERTICES_HAS_TEXS) { |
| 345 texCoords = (const SkPoint*)reader->skip(SkPatchUtils::kNumCorne
rs * | 352 texCoords = (const SkPoint*)reader->skip(SkPatchUtils::kNumCorne
rs * |
| 346 sizeof(SkPoint)); | 353 sizeof(SkPoint)); |
| 347 } | 354 } |
| 348 sk_sp<SkXfermode> xfer; | 355 sk_sp<SkXfermode> xfer; |
| 349 if (flag & DRAW_VERTICES_HAS_XFER) { | 356 if (flag & DRAW_VERTICES_HAS_XFER) { |
| 350 int mode = reader->readInt(); | 357 int mode = reader->readInt(); |
| 351 if (mode < 0 || mode > SkXfermode::kLastMode) { | 358 if (mode < 0 || mode > SkXfermode::kLastMode) { |
| 352 mode = SkXfermode::kModulate_Mode; | 359 mode = SkXfermode::kModulate_Mode; |
| 353 } | 360 } |
| 354 xfer = SkXfermode::Make((SkXfermode::Mode)mode); | 361 xfer = SkXfermode::Make((SkXfermode::Mode)mode); |
| 355 } | 362 } |
| 356 canvas->drawPatch(cubics, colors, texCoords, std::move(xfer), paint)
; | 363 if (paint) { |
| 364 canvas->drawPatch(cubics, colors, texCoords, std::move(xfer), *p
aint); |
| 365 } |
| 357 } break; | 366 } break; |
| 358 case DRAW_PATH: { | 367 case DRAW_PATH: { |
| 359 const SkPaint& paint = *fPictureData->getPaint(reader); | 368 const SkPaint* paint = fPictureData->getPaint(reader); |
| 360 canvas->drawPath(fPictureData->getPath(reader), paint); | 369 if (paint) { |
| 370 canvas->drawPath(fPictureData->getPath(reader), *paint); |
| 371 } |
| 361 } break; | 372 } break; |
| 362 case DRAW_PICTURE: | 373 case DRAW_PICTURE: |
| 363 canvas->drawPicture(fPictureData->getPicture(reader)); | 374 canvas->drawPicture(fPictureData->getPicture(reader)); |
| 364 break; | 375 break; |
| 365 case DRAW_PICTURE_MATRIX_PAINT: { | 376 case DRAW_PICTURE_MATRIX_PAINT: { |
| 366 const SkPaint* paint = fPictureData->getPaint(reader); | 377 const SkPaint* paint = fPictureData->getPaint(reader); |
| 367 SkMatrix matrix; | 378 SkMatrix matrix; |
| 368 reader->readMatrix(&matrix); | 379 reader->readMatrix(&matrix); |
| 369 const SkPicture* pic = fPictureData->getPicture(reader); | 380 const SkPicture* pic = fPictureData->getPicture(reader); |
| 370 canvas->drawPicture(pic, &matrix, paint); | 381 canvas->drawPicture(pic, &matrix, paint); |
| 371 } break; | 382 } break; |
| 372 case DRAW_POINTS: { | 383 case DRAW_POINTS: { |
| 373 const SkPaint& paint = *fPictureData->getPaint(reader); | 384 const SkPaint* paint = fPictureData->getPaint(reader); |
| 374 SkCanvas::PointMode mode = (SkCanvas::PointMode)reader->readInt(); | 385 SkCanvas::PointMode mode = (SkCanvas::PointMode)reader->readInt(); |
| 375 size_t count = reader->readInt(); | 386 size_t count = reader->readInt(); |
| 376 const SkPoint* pts = (const SkPoint*)reader->skip(sizeof(SkPoint)* c
ount); | 387 const SkPoint* pts = (const SkPoint*)reader->skip(sizeof(SkPoint)* c
ount); |
| 377 canvas->drawPoints(mode, count, pts, paint); | 388 if (paint) { |
| 389 canvas->drawPoints(mode, count, pts, *paint); |
| 390 } |
| 378 } break; | 391 } break; |
| 379 case DRAW_POS_TEXT: { | 392 case DRAW_POS_TEXT: { |
| 380 const SkPaint& paint = *fPictureData->getPaint(reader); | 393 const SkPaint* paint = fPictureData->getPaint(reader); |
| 381 TextContainer text; | 394 TextContainer text; |
| 382 get_text(reader, &text); | 395 get_text(reader, &text); |
| 383 size_t points = reader->readInt(); | 396 size_t points = reader->readInt(); |
| 384 const SkPoint* pos = (const SkPoint*)reader->skip(points * sizeof(Sk
Point)); | 397 const SkPoint* pos = (const SkPoint*)reader->skip(points * sizeof(Sk
Point)); |
| 385 canvas->drawPosText(text.text(), text.length(), pos, paint); | 398 if (paint) { |
| 399 canvas->drawPosText(text.text(), text.length(), pos, *paint); |
| 400 } |
| 386 } break; | 401 } break; |
| 387 case DRAW_POS_TEXT_TOP_BOTTOM: { | 402 case DRAW_POS_TEXT_TOP_BOTTOM: { |
| 388 const SkPaint& paint = *fPictureData->getPaint(reader); | 403 const SkPaint* paint = fPictureData->getPaint(reader); |
| 389 TextContainer text; | 404 TextContainer text; |
| 390 get_text(reader, &text); | 405 get_text(reader, &text); |
| 391 size_t points = reader->readInt(); | 406 size_t points = reader->readInt(); |
| 392 const SkPoint* pos = (const SkPoint*)reader->skip(points * sizeof(Sk
Point)); | 407 const SkPoint* pos = (const SkPoint*)reader->skip(points * sizeof(Sk
Point)); |
| 393 const SkScalar top = reader->readScalar(); | 408 const SkScalar top = reader->readScalar(); |
| 394 const SkScalar bottom = reader->readScalar(); | 409 const SkScalar bottom = reader->readScalar(); |
| 395 if (!canvas->quickRejectY(top, bottom)) { | 410 if (!canvas->quickRejectY(top, bottom) && paint) { |
| 396 canvas->drawPosText(text.text(), text.length(), pos, paint); | 411 canvas->drawPosText(text.text(), text.length(), pos, *paint); |
| 397 } | 412 } |
| 398 } break; | 413 } break; |
| 399 case DRAW_POS_TEXT_H: { | 414 case DRAW_POS_TEXT_H: { |
| 400 const SkPaint& paint = *fPictureData->getPaint(reader); | 415 const SkPaint* paint = fPictureData->getPaint(reader); |
| 401 TextContainer text; | 416 TextContainer text; |
| 402 get_text(reader, &text); | 417 get_text(reader, &text); |
| 403 size_t xCount = reader->readInt(); | 418 size_t xCount = reader->readInt(); |
| 404 const SkScalar constY = reader->readScalar(); | 419 const SkScalar constY = reader->readScalar(); |
| 405 const SkScalar* xpos = (const SkScalar*)reader->skip(xCount * sizeof
(SkScalar)); | 420 const SkScalar* xpos = (const SkScalar*)reader->skip(xCount * sizeof
(SkScalar)); |
| 406 canvas->drawPosTextH(text.text(), text.length(), xpos, constY, paint
); | 421 if (paint) { |
| 422 canvas->drawPosTextH(text.text(), text.length(), xpos, constY, *
paint); |
| 423 } |
| 407 } break; | 424 } break; |
| 408 case DRAW_POS_TEXT_H_TOP_BOTTOM: { | 425 case DRAW_POS_TEXT_H_TOP_BOTTOM: { |
| 409 const SkPaint& paint = *fPictureData->getPaint(reader); | 426 const SkPaint* paint = fPictureData->getPaint(reader); |
| 410 TextContainer text; | 427 TextContainer text; |
| 411 get_text(reader, &text); | 428 get_text(reader, &text); |
| 412 size_t xCount = reader->readInt(); | 429 size_t xCount = reader->readInt(); |
| 413 const SkScalar* xpos = (const SkScalar*)reader->skip((3 + xCount) *
sizeof(SkScalar)); | 430 const SkScalar* xpos = (const SkScalar*)reader->skip((3 + xCount) *
sizeof(SkScalar)); |
| 414 const SkScalar top = *xpos++; | 431 const SkScalar top = *xpos++; |
| 415 const SkScalar bottom = *xpos++; | 432 const SkScalar bottom = *xpos++; |
| 416 const SkScalar constY = *xpos++; | 433 const SkScalar constY = *xpos++; |
| 417 if (!canvas->quickRejectY(top, bottom)) { | 434 if (!canvas->quickRejectY(top, bottom) && paint) { |
| 418 canvas->drawPosTextH(text.text(), text.length(), xpos, constY, p
aint); | 435 canvas->drawPosTextH(text.text(), text.length(), xpos, constY, *
paint); |
| 419 } | 436 } |
| 420 } break; | 437 } break; |
| 421 case DRAW_RECT: { | 438 case DRAW_RECT: { |
| 422 const SkPaint& paint = *fPictureData->getPaint(reader); | 439 const SkPaint* paint = fPictureData->getPaint(reader); |
| 423 SkRect rect; | 440 SkRect rect; |
| 424 reader->readRect(&rect); | 441 reader->readRect(&rect); |
| 425 canvas->drawRect(rect, paint); | 442 if (paint) { |
| 443 canvas->drawRect(rect, *paint); |
| 444 } |
| 426 } break; | 445 } break; |
| 427 case DRAW_RRECT: { | 446 case DRAW_RRECT: { |
| 428 const SkPaint& paint = *fPictureData->getPaint(reader); | 447 const SkPaint* paint = fPictureData->getPaint(reader); |
| 429 SkRRect rrect; | 448 SkRRect rrect; |
| 430 reader->readRRect(&rrect); | 449 reader->readRRect(&rrect); |
| 431 canvas->drawRRect(rrect, paint); | 450 if (paint) { |
| 451 canvas->drawRRect(rrect, *paint); |
| 452 } |
| 432 } break; | 453 } break; |
| 433 case DRAW_SPRITE: { | 454 case DRAW_SPRITE: { |
| 434 /* const SkPaint* paint = */ fPictureData->getPaint(reader); | 455 /* const SkPaint* paint = */ fPictureData->getPaint(reader); |
| 435 /* const SkBitmap bitmap = */ shallow_copy(fPictureData->getBitmap(r
eader)); | 456 /* const SkBitmap bitmap = */ shallow_copy(fPictureData->getBitmap(r
eader)); |
| 436 /* int left = */ reader->readInt(); | 457 /* int left = */ reader->readInt(); |
| 437 /* int top = */ reader->readInt(); | 458 /* int top = */ reader->readInt(); |
| 438 // drawSprite removed dec-2015 | 459 // drawSprite removed dec-2015 |
| 439 } break; | 460 } break; |
| 440 case DRAW_TEXT: { | 461 case DRAW_TEXT: { |
| 441 const SkPaint& paint = *fPictureData->getPaint(reader); | 462 const SkPaint* paint = fPictureData->getPaint(reader); |
| 442 TextContainer text; | 463 TextContainer text; |
| 443 get_text(reader, &text); | 464 get_text(reader, &text); |
| 444 SkScalar x = reader->readScalar(); | 465 SkScalar x = reader->readScalar(); |
| 445 SkScalar y = reader->readScalar(); | 466 SkScalar y = reader->readScalar(); |
| 446 canvas->drawText(text.text(), text.length(), x, y, paint); | 467 if (paint) { |
| 468 canvas->drawText(text.text(), text.length(), x, y, *paint); |
| 469 } |
| 447 } break; | 470 } break; |
| 448 case DRAW_TEXT_BLOB: { | 471 case DRAW_TEXT_BLOB: { |
| 449 const SkPaint& paint = *fPictureData->getPaint(reader); | 472 const SkPaint* paint = fPictureData->getPaint(reader); |
| 450 const SkTextBlob* blob = fPictureData->getTextBlob(reader); | 473 const SkTextBlob* blob = fPictureData->getTextBlob(reader); |
| 451 SkScalar x = reader->readScalar(); | 474 SkScalar x = reader->readScalar(); |
| 452 SkScalar y = reader->readScalar(); | 475 SkScalar y = reader->readScalar(); |
| 453 canvas->drawTextBlob(blob, x, y, paint); | 476 if (paint) { |
| 477 canvas->drawTextBlob(blob, x, y, *paint); |
| 478 } |
| 454 } break; | 479 } break; |
| 455 case DRAW_TEXT_TOP_BOTTOM: { | 480 case DRAW_TEXT_TOP_BOTTOM: { |
| 456 const SkPaint& paint = *fPictureData->getPaint(reader); | 481 const SkPaint* paint = fPictureData->getPaint(reader); |
| 457 TextContainer text; | 482 TextContainer text; |
| 458 get_text(reader, &text); | 483 get_text(reader, &text); |
| 459 const SkScalar* ptr = (const SkScalar*)reader->skip(4 * sizeof(SkSca
lar)); | 484 const SkScalar* ptr = (const SkScalar*)reader->skip(4 * sizeof(SkSca
lar)); |
| 460 // ptr[0] == x | 485 // ptr[0] == x |
| 461 // ptr[1] == y | 486 // ptr[1] == y |
| 462 // ptr[2] == top | 487 // ptr[2] == top |
| 463 // ptr[3] == bottom | 488 // ptr[3] == bottom |
| 464 if (!canvas->quickRejectY(ptr[2], ptr[3])) { | 489 if (!canvas->quickRejectY(ptr[2], ptr[3]) && paint) { |
| 465 canvas->drawText(text.text(), text.length(), ptr[0], ptr[1], pai
nt); | 490 canvas->drawText(text.text(), text.length(), ptr[0], ptr[1], *pa
int); |
| 466 } | 491 } |
| 467 } break; | 492 } break; |
| 468 case DRAW_TEXT_ON_PATH: { | 493 case DRAW_TEXT_ON_PATH: { |
| 469 const SkPaint& paint = *fPictureData->getPaint(reader); | 494 const SkPaint* paint = fPictureData->getPaint(reader); |
| 470 TextContainer text; | 495 TextContainer text; |
| 471 get_text(reader, &text); | 496 get_text(reader, &text); |
| 472 const SkPath& path = fPictureData->getPath(reader); | 497 const SkPath& path = fPictureData->getPath(reader); |
| 473 SkMatrix matrix; | 498 SkMatrix matrix; |
| 474 reader->readMatrix(&matrix); | 499 reader->readMatrix(&matrix); |
| 475 canvas->drawTextOnPath(text.text(), text.length(), path, &matrix, pa
int); | 500 if (paint) { |
| 501 canvas->drawTextOnPath(text.text(), text.length(), path, &matrix
, *paint); |
| 502 } |
| 476 } break; | 503 } break; |
| 477 case DRAW_VERTICES: { | 504 case DRAW_VERTICES: { |
| 478 sk_sp<SkXfermode> xfer; | 505 sk_sp<SkXfermode> xfer; |
| 479 const SkPaint& paint = *fPictureData->getPaint(reader); | 506 const SkPaint* paint = fPictureData->getPaint(reader); |
| 480 DrawVertexFlags flags = (DrawVertexFlags)reader->readInt(); | 507 DrawVertexFlags flags = (DrawVertexFlags)reader->readInt(); |
| 481 SkCanvas::VertexMode vmode = (SkCanvas::VertexMode)reader->readInt()
; | 508 SkCanvas::VertexMode vmode = (SkCanvas::VertexMode)reader->readInt()
; |
| 482 int vCount = reader->readInt(); | 509 int vCount = reader->readInt(); |
| 483 const SkPoint* verts = (const SkPoint*)reader->skip(vCount * sizeof(
SkPoint)); | 510 const SkPoint* verts = (const SkPoint*)reader->skip(vCount * sizeof(
SkPoint)); |
| 484 const SkPoint* texs = nullptr; | 511 const SkPoint* texs = nullptr; |
| 485 const SkColor* colors = nullptr; | 512 const SkColor* colors = nullptr; |
| 486 const uint16_t* indices = nullptr; | 513 const uint16_t* indices = nullptr; |
| 487 int iCount = 0; | 514 int iCount = 0; |
| 488 if (flags & DRAW_VERTICES_HAS_TEXS) { | 515 if (flags & DRAW_VERTICES_HAS_TEXS) { |
| 489 texs = (const SkPoint*)reader->skip(vCount * sizeof(SkPoint)); | 516 texs = (const SkPoint*)reader->skip(vCount * sizeof(SkPoint)); |
| 490 } | 517 } |
| 491 if (flags & DRAW_VERTICES_HAS_COLORS) { | 518 if (flags & DRAW_VERTICES_HAS_COLORS) { |
| 492 colors = (const SkColor*)reader->skip(vCount * sizeof(SkColor)); | 519 colors = (const SkColor*)reader->skip(vCount * sizeof(SkColor)); |
| 493 } | 520 } |
| 494 if (flags & DRAW_VERTICES_HAS_INDICES) { | 521 if (flags & DRAW_VERTICES_HAS_INDICES) { |
| 495 iCount = reader->readInt(); | 522 iCount = reader->readInt(); |
| 496 indices = (const uint16_t*)reader->skip(iCount * sizeof(uint16_t
)); | 523 indices = (const uint16_t*)reader->skip(iCount * sizeof(uint16_t
)); |
| 497 } | 524 } |
| 498 if (flags & DRAW_VERTICES_HAS_XFER) { | 525 if (flags & DRAW_VERTICES_HAS_XFER) { |
| 499 int mode = reader->readInt(); | 526 int mode = reader->readInt(); |
| 500 if (mode < 0 || mode > SkXfermode::kLastMode) { | 527 if (mode < 0 || mode > SkXfermode::kLastMode) { |
| 501 mode = SkXfermode::kModulate_Mode; | 528 mode = SkXfermode::kModulate_Mode; |
| 502 } | 529 } |
| 503 xfer = SkXfermode::Make((SkXfermode::Mode)mode); | 530 xfer = SkXfermode::Make((SkXfermode::Mode)mode); |
| 504 } | 531 } |
| 505 canvas->drawVertices(vmode, vCount, verts, texs, colors, xfer, indic
es, iCount, paint); | 532 if (paint) { |
| 533 canvas->drawVertices(vmode, vCount, verts, texs, colors, |
| 534 xfer, indices, iCount, *paint); |
| 535 } |
| 506 } break; | 536 } break; |
| 507 case RESTORE: | 537 case RESTORE: |
| 508 canvas->restore(); | 538 canvas->restore(); |
| 509 break; | 539 break; |
| 510 case ROTATE: | 540 case ROTATE: |
| 511 canvas->rotate(reader->readScalar()); | 541 canvas->rotate(reader->readScalar()); |
| 512 break; | 542 break; |
| 513 case SAVE: | 543 case SAVE: |
| 514 // SKPs with version < 29 also store a SaveFlags param. | 544 // SKPs with version < 29 also store a SaveFlags param. |
| 515 if (size > 4) { | 545 if (size > 4) { |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 569 } break; | 599 } break; |
| 570 case TRANSLATE: { | 600 case TRANSLATE: { |
| 571 SkScalar dx = reader->readScalar(); | 601 SkScalar dx = reader->readScalar(); |
| 572 SkScalar dy = reader->readScalar(); | 602 SkScalar dy = reader->readScalar(); |
| 573 canvas->translate(dx, dy); | 603 canvas->translate(dx, dy); |
| 574 } break; | 604 } break; |
| 575 default: | 605 default: |
| 576 SkASSERTF(false, "Unknown draw type: %d", op); | 606 SkASSERTF(false, "Unknown draw type: %d", op); |
| 577 } | 607 } |
| 578 } | 608 } |
| OLD | NEW |