Chromium Code Reviews| 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 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 412 } | 412 } |
| 413 } break; | 413 } break; |
| 414 case DRAW_POS_TEXT_TOP_BOTTOM: { | 414 case DRAW_POS_TEXT_TOP_BOTTOM: { |
| 415 const SkPaint* paint = fPictureData->getPaint(reader); | 415 const SkPaint* paint = fPictureData->getPaint(reader); |
| 416 TextContainer text; | 416 TextContainer text; |
| 417 get_text(reader, &text); | 417 get_text(reader, &text); |
| 418 size_t points = reader->readInt(); | 418 size_t points = reader->readInt(); |
| 419 const SkPoint* pos = (const SkPoint*)reader->skip(points * sizeof(Sk Point)); | 419 const SkPoint* pos = (const SkPoint*)reader->skip(points * sizeof(Sk Point)); |
| 420 const SkScalar top = reader->readScalar(); | 420 const SkScalar top = reader->readScalar(); |
| 421 const SkScalar bottom = reader->readScalar(); | 421 const SkScalar bottom = reader->readScalar(); |
| 422 if (!canvas->quickRejectY(top, bottom) && paint) { | 422 SkRect src; |
| 423 canvas->getClipBounds(&src); | |
| 424 src.fTop = top; | |
| 425 src.fBottom = bottom; | |
| 426 if (!canvas->quickReject(src) && paint) { | |
|
reed1
2016/08/11 16:49:08
Lets write own own check here -- should be trivial
msarett
2016/08/11 16:56:49
Of course, thanks. Done.
| |
| 423 canvas->drawPosText(text.text(), text.length(), pos, *paint); | 427 canvas->drawPosText(text.text(), text.length(), pos, *paint); |
| 424 } | 428 } |
| 425 } break; | 429 } break; |
| 426 case DRAW_POS_TEXT_H: { | 430 case DRAW_POS_TEXT_H: { |
| 427 const SkPaint* paint = fPictureData->getPaint(reader); | 431 const SkPaint* paint = fPictureData->getPaint(reader); |
| 428 TextContainer text; | 432 TextContainer text; |
| 429 get_text(reader, &text); | 433 get_text(reader, &text); |
| 430 size_t xCount = reader->readInt(); | 434 size_t xCount = reader->readInt(); |
| 431 const SkScalar constY = reader->readScalar(); | 435 const SkScalar constY = reader->readScalar(); |
| 432 const SkScalar* xpos = (const SkScalar*)reader->skip(xCount * sizeof (SkScalar)); | 436 const SkScalar* xpos = (const SkScalar*)reader->skip(xCount * sizeof (SkScalar)); |
| 433 if (paint) { | 437 if (paint) { |
| 434 canvas->drawPosTextH(text.text(), text.length(), xpos, constY, * paint); | 438 canvas->drawPosTextH(text.text(), text.length(), xpos, constY, * paint); |
| 435 } | 439 } |
| 436 } break; | 440 } break; |
| 437 case DRAW_POS_TEXT_H_TOP_BOTTOM: { | 441 case DRAW_POS_TEXT_H_TOP_BOTTOM: { |
| 438 const SkPaint* paint = fPictureData->getPaint(reader); | 442 const SkPaint* paint = fPictureData->getPaint(reader); |
| 439 TextContainer text; | 443 TextContainer text; |
| 440 get_text(reader, &text); | 444 get_text(reader, &text); |
| 441 size_t xCount = reader->readInt(); | 445 size_t xCount = reader->readInt(); |
| 442 const SkScalar* xpos = (const SkScalar*)reader->skip((3 + xCount) * sizeof(SkScalar)); | 446 const SkScalar* xpos = (const SkScalar*)reader->skip((3 + xCount) * sizeof(SkScalar)); |
| 443 const SkScalar top = *xpos++; | 447 const SkScalar top = *xpos++; |
| 444 const SkScalar bottom = *xpos++; | 448 const SkScalar bottom = *xpos++; |
| 445 const SkScalar constY = *xpos++; | 449 const SkScalar constY = *xpos++; |
| 446 if (!canvas->quickRejectY(top, bottom) && paint) { | 450 SkRect src; |
| 451 canvas->getClipBounds(&src); | |
| 452 src.fTop = top; | |
| 453 src.fBottom = bottom; | |
| 454 if (!canvas->quickReject(src) && paint) { | |
| 447 canvas->drawPosTextH(text.text(), text.length(), xpos, constY, * paint); | 455 canvas->drawPosTextH(text.text(), text.length(), xpos, constY, * paint); |
| 448 } | 456 } |
| 449 } break; | 457 } break; |
| 450 case DRAW_RECT: { | 458 case DRAW_RECT: { |
| 451 const SkPaint* paint = fPictureData->getPaint(reader); | 459 const SkPaint* paint = fPictureData->getPaint(reader); |
| 452 SkRect rect; | 460 SkRect rect; |
| 453 reader->readRect(&rect); | 461 reader->readRect(&rect); |
| 454 if (paint) { | 462 if (paint) { |
| 455 canvas->drawRect(rect, *paint); | 463 canvas->drawRect(rect, *paint); |
| 456 } | 464 } |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 491 } break; | 499 } break; |
| 492 case DRAW_TEXT_TOP_BOTTOM: { | 500 case DRAW_TEXT_TOP_BOTTOM: { |
| 493 const SkPaint* paint = fPictureData->getPaint(reader); | 501 const SkPaint* paint = fPictureData->getPaint(reader); |
| 494 TextContainer text; | 502 TextContainer text; |
| 495 get_text(reader, &text); | 503 get_text(reader, &text); |
| 496 const SkScalar* ptr = (const SkScalar*)reader->skip(4 * sizeof(SkSca lar)); | 504 const SkScalar* ptr = (const SkScalar*)reader->skip(4 * sizeof(SkSca lar)); |
| 497 // ptr[0] == x | 505 // ptr[0] == x |
| 498 // ptr[1] == y | 506 // ptr[1] == y |
| 499 // ptr[2] == top | 507 // ptr[2] == top |
| 500 // ptr[3] == bottom | 508 // ptr[3] == bottom |
| 501 if (!canvas->quickRejectY(ptr[2], ptr[3]) && paint) { | 509 SkRect src; |
| 510 canvas->getClipBounds(&src); | |
| 511 src.fTop = ptr[2]; | |
| 512 src.fBottom = ptr[3]; | |
| 513 if (!canvas->quickReject(src) && paint) { | |
| 502 canvas->drawText(text.text(), text.length(), ptr[0], ptr[1], *pa int); | 514 canvas->drawText(text.text(), text.length(), ptr[0], ptr[1], *pa int); |
| 503 } | 515 } |
| 504 } break; | 516 } break; |
| 505 case DRAW_TEXT_ON_PATH: { | 517 case DRAW_TEXT_ON_PATH: { |
| 506 const SkPaint* paint = fPictureData->getPaint(reader); | 518 const SkPaint* paint = fPictureData->getPaint(reader); |
| 507 TextContainer text; | 519 TextContainer text; |
| 508 get_text(reader, &text); | 520 get_text(reader, &text); |
| 509 const SkPath& path = fPictureData->getPath(reader); | 521 const SkPath& path = fPictureData->getPath(reader); |
| 510 SkMatrix matrix; | 522 SkMatrix matrix; |
| 511 reader->readMatrix(&matrix); | 523 reader->readMatrix(&matrix); |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 631 case TRANSLATE_Z: { | 643 case TRANSLATE_Z: { |
| 632 #ifdef SK_EXPERIMENTAL_SHADOWING | 644 #ifdef SK_EXPERIMENTAL_SHADOWING |
| 633 SkScalar dz = reader->readScalar(); | 645 SkScalar dz = reader->readScalar(); |
| 634 canvas->translateZ(dz); | 646 canvas->translateZ(dz); |
| 635 #endif | 647 #endif |
| 636 } break; | 648 } break; |
| 637 default: | 649 default: |
| 638 SkASSERTF(false, "Unknown draw type: %d", op); | 650 SkASSERTF(false, "Unknown draw type: %d", op); |
| 639 } | 651 } |
| 640 } | 652 } |
| OLD | NEW |