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 |