Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Side by Side Diff: skia/ext/benchmarking_canvas.cc

Issue 993893004: Add back overdraw visualization for Skia BenchmarkingCanvas (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: no need for SkScalar Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « skia/ext/benchmarking_canvas.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/logging.h" 5 #include "base/logging.h"
6 #include "base/strings/stringprintf.h" 6 #include "base/strings/stringprintf.h"
7 #include "base/time/time.h" 7 #include "base/time/time.h"
8 #include "skia/ext/benchmarking_canvas.h" 8 #include "skia/ext/benchmarking_canvas.h"
9 #include "third_party/skia/include/core/SkColorFilter.h" 9 #include "third_party/skia/include/core/SkColorFilter.h"
10 #include "third_party/skia/include/core/SkImageFilter.h" 10 #include "third_party/skia/include/core/SkImageFilter.h"
11 #include "third_party/skia/include/core/SkTLazy.h"
11 #include "third_party/skia/include/core/SkPicture.h" 12 #include "third_party/skia/include/core/SkPicture.h"
12 #include "third_party/skia/include/core/SkRegion.h" 13 #include "third_party/skia/include/core/SkRegion.h"
14 #include "third_party/skia/include/core/SkString.h"
13 #include "third_party/skia/include/core/SkTextBlob.h" 15 #include "third_party/skia/include/core/SkTextBlob.h"
14 #include "third_party/skia/include/core/SkXfermode.h" 16 #include "third_party/skia/include/core/SkXfermode.h"
15 17
16 namespace { 18 namespace {
17 19
18 class FlagsBuilder { 20 class FlagsBuilder {
19 public: 21 public:
20 FlagsBuilder(char separator) 22 FlagsBuilder(char separator)
21 : separator_(separator) {} 23 : separator_(separator) {}
22 24
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 template<typename T> 400 template<typename T>
399 WARN_UNUSED_RESULT 401 WARN_UNUSED_RESULT
400 scoped_ptr<base::Value> AsListValue(const T array[], size_t count) { 402 scoped_ptr<base::Value> AsListValue(const T array[], size_t count) {
401 scoped_ptr<base::ListValue> val(new base::ListValue()); 403 scoped_ptr<base::ListValue> val(new base::ListValue());
402 404
403 for (size_t i = 0; i < count; ++i) 405 for (size_t i = 0; i < count; ++i)
404 val->Append(AsValue(array[i]).release()); 406 val->Append(AsValue(array[i]).release());
405 407
406 return val.Pass(); 408 return val.Pass();
407 } 409 }
408 410
robertphillips 2015/03/11 14:07:47 // Comment maybe ? // This filter works by ...
f(malita) 2015/03/11 14:45:48 Switched back to the color-table approach.
411 class OverdrawXfermode : public SkXfermode {
412 public:
413 SkPMColor xferColor(SkPMColor, SkPMColor dst) const override {
414 // Interpolate between kStartColor & kEndColor,
415 // adding kRate weight for each overdraw.
416 const SkPMColor kStartColor = SkPackARGB32(0xFF, 0x80, 0x80, 0xFF);
417 const SkPMColor kEndColor = SkPackARGB32(0xFF, 0xFF, 0, 0);
418 const float kRate = 0.1f;
419
420 float weight = 0.f;
421 if (SkGetPackedR32(dst) >= SkGetPackedR16(kStartColor)) {
422 weight = (float)(SkGetPackedR32(dst) - SkGetPackedR32(kStartColor)) /
423 (SkGetPackedR32(kEndColor) - SkGetPackedR32(kStartColor));
424 weight = std::min(weight + kRate, 1.f);
425 }
426
427 return SkFourByteInterp(kEndColor, kStartColor,
428 SkScalarRoundToInt(weight * 255));
429 }
430
431 Factory getFactory() const override { return NULL; }
432 #ifndef SK_IGNORE_TO_STRING
433 void toString(SkString* str) const override { str->set("OverdrawXfermode"); }
434 #endif
435
436 private:
437 typedef SkXfermode INHERITED;
438 };
439
409 } // namespace 440 } // namespace
410 441
411 namespace skia { 442 namespace skia {
412 443
413 class BenchmarkingCanvas::AutoOp { 444 class BenchmarkingCanvas::AutoOp {
414 public: 445 public:
415 AutoOp(BenchmarkingCanvas* canvas, const char op_name[], 446 AutoOp(BenchmarkingCanvas* canvas, const char op_name[],
416 const SkPaint* paint = nullptr) 447 const SkPaint* paint = nullptr)
417 : canvas_(canvas) 448 : canvas_(canvas)
418 , op_record_(new base::DictionaryValue()) 449 , op_record_(new base::DictionaryValue())
419 , op_params_(new base::ListValue()) { 450 , op_params_(new base::ListValue())
robertphillips 2015/03/11 14:07:47 What guarantees is the caller providing regarding
f(malita) 2015/03/11 14:45:48 AutoOp objects are always scoped within a given dr
451 , paint_(paint) {
420 452
421 DCHECK(canvas); 453 DCHECK(canvas);
422 DCHECK(op_name); 454 DCHECK(op_name);
423 455
424 op_record_->SetString("cmd_string", op_name); 456 op_record_->SetString("cmd_string", op_name);
425 op_record_->Set("info", op_params_); 457 op_record_->Set("info", op_params_);
426 458
427 if (paint) 459 if (paint) {
428 this->addParam("paint", AsValue(*paint)); 460 this->addParam("paint", AsValue(*paint));
429 461
robertphillips 2015/03/11 14:07:47 I think even if the op has no paint you need to cr
f(malita) 2015/03/11 14:45:48 Good catch, done.
462 if (canvas->flags_ & kOverdrawVisualization_Flag) {
463 DCHECK(canvas->overdraw_xfermode_);
464 paint_ = filtered_paint_.set(*paint);
465 filtered_paint_.get()->setXfermode(canvas->overdraw_xfermode_.get());
robertphillips 2015/03/11 14:07:47 Should disable AA in here too.
f(malita) 2015/03/11 14:45:49 Done.
466 }
467 }
468
430 start_ticks_ = base::TimeTicks::Now(); 469 start_ticks_ = base::TimeTicks::Now();
431 } 470 }
432 471
433 ~AutoOp() { 472 ~AutoOp() {
434 base::TimeDelta ticks = base::TimeTicks::Now() - start_ticks_; 473 base::TimeDelta ticks = base::TimeTicks::Now() - start_ticks_;
435 op_record_->SetDouble("cmd_time", ticks.InMillisecondsF()); 474 op_record_->SetDouble("cmd_time", ticks.InMillisecondsF());
436 475
437 canvas_->op_records_.Append(op_record_); 476 canvas_->op_records_.Append(op_record_);
438 } 477 }
439 478
440 void addParam(const char name[], scoped_ptr<base::Value> value) { 479 void addParam(const char name[], scoped_ptr<base::Value> value) {
441 scoped_ptr<base::DictionaryValue> param(new base::DictionaryValue()); 480 scoped_ptr<base::DictionaryValue> param(new base::DictionaryValue());
442 param->Set(name, value.Pass()); 481 param->Set(name, value.Pass());
443 482
444 op_params_->Append(param.release()); 483 op_params_->Append(param.release());
445 } 484 }
446 485
486 const SkPaint* paint() const { return paint_; }
487
447 private: 488 private:
448 BenchmarkingCanvas* canvas_; 489 BenchmarkingCanvas* canvas_;
449 base::DictionaryValue* op_record_; 490 base::DictionaryValue* op_record_;
450 base::ListValue* op_params_; 491 base::ListValue* op_params_;
451 base::TimeTicks start_ticks_; 492 base::TimeTicks start_ticks_;
493
494 const SkPaint* paint_;
495 SkTLazy<SkPaint> filtered_paint_;
452 }; 496 };
453 497
454 BenchmarkingCanvas::BenchmarkingCanvas(SkCanvas* canvas, unsigned flags) 498 BenchmarkingCanvas::BenchmarkingCanvas(SkCanvas* canvas, unsigned flags)
455 : INHERITED(canvas->imageInfo().width(), 499 : INHERITED(canvas->imageInfo().width(),
456 canvas->imageInfo().height()) 500 canvas->imageInfo().height())
457 , flags_(flags) { 501 , flags_(flags) {
458 addCanvas(canvas); 502 addCanvas(canvas);
503
504 if (flags & kOverdrawVisualization_Flag)
505 overdraw_xfermode_ = AdoptRef(new OverdrawXfermode);
459 } 506 }
460 507
461 BenchmarkingCanvas::~BenchmarkingCanvas() { 508 BenchmarkingCanvas::~BenchmarkingCanvas() {
462 } 509 }
463 510
464 size_t BenchmarkingCanvas::CommandCount() const { 511 size_t BenchmarkingCanvas::CommandCount() const {
465 return op_records_.GetSize(); 512 return op_records_.GetSize();
466 } 513 }
467 514
468 const base::ListValue& BenchmarkingCanvas::Commands() const { 515 const base::ListValue& BenchmarkingCanvas::Commands() const {
(...skipping 17 matching lines...) Expand all
486 533
487 INHERITED::willSave(); 534 INHERITED::willSave();
488 } 535 }
489 536
490 SkCanvas::SaveLayerStrategy BenchmarkingCanvas::willSaveLayer(const SkRect* rect , 537 SkCanvas::SaveLayerStrategy BenchmarkingCanvas::willSaveLayer(const SkRect* rect ,
491 const SkPaint* pai nt, 538 const SkPaint* pai nt,
492 SaveFlags flags) { 539 SaveFlags flags) {
493 AutoOp op(this, "SaveLayer", paint); 540 AutoOp op(this, "SaveLayer", paint);
494 if (rect) 541 if (rect)
495 op.addParam("bounds", AsValue(*rect)); 542 op.addParam("bounds", AsValue(*rect));
496 if (paint)
497 op.addParam("paint", AsValue(*paint));
498 if (flags) 543 if (flags)
499 op.addParam("flags", AsValue(flags)); 544 op.addParam("flags", AsValue(flags));
500 545
501 return INHERITED::willSaveLayer(rect, paint, flags); 546 return INHERITED::willSaveLayer(rect, op.paint(), flags);
502 } 547 }
503 548
504 void BenchmarkingCanvas::willRestore() { 549 void BenchmarkingCanvas::willRestore() {
505 AutoOp op(this, "Restore"); 550 AutoOp op(this, "Restore");
506 551
507 INHERITED::willRestore(); 552 INHERITED::willRestore();
508 } 553 }
509 554
510 void BenchmarkingCanvas::didConcat(const SkMatrix& m) { 555 void BenchmarkingCanvas::didConcat(const SkMatrix& m) {
511 AutoOp op(this, "Concat"); 556 AutoOp op(this, "Concat");
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 AutoOp op(this, "ClipRegion"); 604 AutoOp op(this, "ClipRegion");
560 op.addParam("region", AsValue(region)); 605 op.addParam("region", AsValue(region));
561 op.addParam("op", AsValue(region_op)); 606 op.addParam("op", AsValue(region_op));
562 607
563 INHERITED::onClipRegion(region, region_op); 608 INHERITED::onClipRegion(region, region_op);
564 } 609 }
565 610
566 void BenchmarkingCanvas::onDrawPaint(const SkPaint& paint) { 611 void BenchmarkingCanvas::onDrawPaint(const SkPaint& paint) {
567 AutoOp op(this, "DrawPaint", &paint); 612 AutoOp op(this, "DrawPaint", &paint);
568 613
569 INHERITED::onDrawPaint(paint); 614 INHERITED::onDrawPaint(*op.paint());
570 } 615 }
571 616
572 void BenchmarkingCanvas::onDrawPoints(PointMode mode, size_t count, 617 void BenchmarkingCanvas::onDrawPoints(PointMode mode, size_t count,
573 const SkPoint pts[], const SkPaint& paint) { 618 const SkPoint pts[], const SkPaint& paint) {
574 AutoOp op(this, "DrawPoints", &paint); 619 AutoOp op(this, "DrawPoints", &paint);
575 op.addParam("mode", AsValue(mode)); 620 op.addParam("mode", AsValue(mode));
576 op.addParam("points", AsListValue(pts, count)); 621 op.addParam("points", AsListValue(pts, count));
577 622
578 INHERITED::onDrawPoints(mode, count, pts, paint); 623 INHERITED::onDrawPoints(mode, count, pts, *op.paint());
579 } 624 }
580 625
581 void BenchmarkingCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) { 626 void BenchmarkingCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) {
582 AutoOp op(this, "DrawRect", &paint); 627 AutoOp op(this, "DrawRect", &paint);
583 op.addParam("rect", AsValue(rect)); 628 op.addParam("rect", AsValue(rect));
584 629
585 INHERITED::onDrawRect(rect, paint); 630 INHERITED::onDrawRect(rect, *op.paint());
586 } 631 }
587 632
588 void BenchmarkingCanvas::onDrawOval(const SkRect& rect, const SkPaint& paint) { 633 void BenchmarkingCanvas::onDrawOval(const SkRect& rect, const SkPaint& paint) {
589 AutoOp op(this, "DrawOval", &paint); 634 AutoOp op(this, "DrawOval", &paint);
590 op.addParam("rect", AsValue(rect)); 635 op.addParam("rect", AsValue(rect));
591 636
592 INHERITED::onDrawOval(rect, paint); 637 INHERITED::onDrawOval(rect, *op.paint());
593 } 638 }
594 639
595 void BenchmarkingCanvas::onDrawRRect(const SkRRect& rrect, const SkPaint& paint) { 640 void BenchmarkingCanvas::onDrawRRect(const SkRRect& rrect, const SkPaint& paint) {
596 AutoOp op(this, "DrawRRect", &paint); 641 AutoOp op(this, "DrawRRect", &paint);
597 op.addParam("rrect", AsValue(rrect)); 642 op.addParam("rrect", AsValue(rrect));
598 643
599 INHERITED::onDrawRRect(rrect, paint); 644 INHERITED::onDrawRRect(rrect, *op.paint());
600 } 645 }
601 646
602 void BenchmarkingCanvas::onDrawDRRect(const SkRRect& outer, const SkRRect& inner , 647 void BenchmarkingCanvas::onDrawDRRect(const SkRRect& outer, const SkRRect& inner ,
603 const SkPaint& paint) { 648 const SkPaint& paint) {
604 AutoOp op(this, "DrawDRRect", &paint); 649 AutoOp op(this, "DrawDRRect", &paint);
605 op.addParam("outer", AsValue(outer)); 650 op.addParam("outer", AsValue(outer));
606 op.addParam("inner", AsValue(inner)); 651 op.addParam("inner", AsValue(inner));
607 652
608 INHERITED::onDrawDRRect(outer, inner, paint); 653 INHERITED::onDrawDRRect(outer, inner, *op.paint());
609 } 654 }
610 655
611 void BenchmarkingCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) { 656 void BenchmarkingCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) {
612 AutoOp op(this, "DrawPath", &paint); 657 AutoOp op(this, "DrawPath", &paint);
613 op.addParam("path", AsValue(path)); 658 op.addParam("path", AsValue(path));
614 659
615 INHERITED::onDrawPath(path, paint); 660 INHERITED::onDrawPath(path, *op.paint());
616 } 661 }
617 662
618 void BenchmarkingCanvas::onDrawPicture(const SkPicture* picture, 663 void BenchmarkingCanvas::onDrawPicture(const SkPicture* picture,
619 const SkMatrix* matrix, 664 const SkMatrix* matrix,
620 const SkPaint* paint) { 665 const SkPaint* paint) {
621 DCHECK(picture); 666 DCHECK(picture);
622 AutoOp op(this, "DrawPicture", paint); 667 AutoOp op(this, "DrawPicture", paint);
623 op.addParam("picture", AsValue(picture)); 668 op.addParam("picture", AsValue(picture));
624 if (matrix) 669 if (matrix)
625 op.addParam("matrix", AsValue(*matrix)); 670 op.addParam("matrix", AsValue(*matrix));
626 671
627 INHERITED::onDrawPicture(picture, matrix, paint); 672 INHERITED::onDrawPicture(picture, matrix, op.paint());
628 } 673 }
629 674
630 void BenchmarkingCanvas::onDrawBitmap(const SkBitmap& bitmap, 675 void BenchmarkingCanvas::onDrawBitmap(const SkBitmap& bitmap,
631 SkScalar left, 676 SkScalar left,
632 SkScalar top, 677 SkScalar top,
633 const SkPaint* paint) { 678 const SkPaint* paint) {
634 AutoOp op(this, "DrawBitmap", paint); 679 AutoOp op(this, "DrawBitmap", paint);
635 op.addParam("bitmap", AsValue(bitmap)); 680 op.addParam("bitmap", AsValue(bitmap));
636 op.addParam("left", AsValue(left)); 681 op.addParam("left", AsValue(left));
637 op.addParam("top", AsValue(top)); 682 op.addParam("top", AsValue(top));
638 683
639 INHERITED::onDrawBitmap(bitmap, left, top, paint); 684 INHERITED::onDrawBitmap(bitmap, left, top, op.paint());
640 } 685 }
641 686
642 void BenchmarkingCanvas::onDrawBitmapRect(const SkBitmap& bitmap, 687 void BenchmarkingCanvas::onDrawBitmapRect(const SkBitmap& bitmap,
643 const SkRect* src, 688 const SkRect* src,
644 const SkRect& dst, 689 const SkRect& dst,
645 const SkPaint* paint, 690 const SkPaint* paint,
646 DrawBitmapRectFlags flags) { 691 DrawBitmapRectFlags flags) {
647 AutoOp op(this, "DrawBitmapRect", paint); 692 AutoOp op(this, "DrawBitmapRect", paint);
648 op.addParam("bitmap", AsValue(bitmap)); 693 op.addParam("bitmap", AsValue(bitmap));
649 if (src) 694 if (src)
650 op.addParam("src", AsValue(*src)); 695 op.addParam("src", AsValue(*src));
651 op.addParam("dst", AsValue(dst)); 696 op.addParam("dst", AsValue(dst));
652 697
653 INHERITED::onDrawBitmapRect(bitmap, src, dst, paint, flags); 698 INHERITED::onDrawBitmapRect(bitmap, src, dst, op.paint(), flags);
654 } 699 }
655 700
656 void BenchmarkingCanvas::onDrawImage(const SkImage* image, 701 void BenchmarkingCanvas::onDrawImage(const SkImage* image,
657 SkScalar left, 702 SkScalar left,
658 SkScalar top, 703 SkScalar top,
659 const SkPaint* paint) { 704 const SkPaint* paint) {
660 DCHECK(image); 705 DCHECK(image);
661 AutoOp op(this, "DrawImage", paint); 706 AutoOp op(this, "DrawImage", paint);
662 op.addParam("image", AsValue(*image)); 707 op.addParam("image", AsValue(*image));
663 op.addParam("left", AsValue(left)); 708 op.addParam("left", AsValue(left));
664 op.addParam("top", AsValue(top)); 709 op.addParam("top", AsValue(top));
665 710
666 INHERITED::onDrawImage(image, left, top, paint); 711 INHERITED::onDrawImage(image, left, top, op.paint());
667 } 712 }
668 713
669 void BenchmarkingCanvas::onDrawImageRect(const SkImage* image, const SkRect* src , 714 void BenchmarkingCanvas::onDrawImageRect(const SkImage* image, const SkRect* src ,
670 const SkRect& dst, const SkPaint* paint ) { 715 const SkRect& dst, const SkPaint* paint ) {
671 DCHECK(image); 716 DCHECK(image);
672 AutoOp op(this, "DrawImageRect", paint); 717 AutoOp op(this, "DrawImageRect", paint);
673 op.addParam("image", AsValue(*image)); 718 op.addParam("image", AsValue(*image));
674 if (src) 719 if (src)
675 op.addParam("src", AsValue(*src)); 720 op.addParam("src", AsValue(*src));
676 op.addParam("dst", AsValue(dst)); 721 op.addParam("dst", AsValue(dst));
677 722
678 INHERITED::onDrawImageRect(image, src, dst, paint); 723 INHERITED::onDrawImageRect(image, src, dst, op.paint());
679 } 724 }
680 725
681 void BenchmarkingCanvas::onDrawBitmapNine(const SkBitmap& bitmap, 726 void BenchmarkingCanvas::onDrawBitmapNine(const SkBitmap& bitmap,
682 const SkIRect& center, 727 const SkIRect& center,
683 const SkRect& dst, 728 const SkRect& dst,
684 const SkPaint* paint) { 729 const SkPaint* paint) {
685 AutoOp op(this, "DrawBitmapNine", paint); 730 AutoOp op(this, "DrawBitmapNine", paint);
686 op.addParam("bitmap", AsValue(bitmap)); 731 op.addParam("bitmap", AsValue(bitmap));
687 op.addParam("center", AsValue(SkRect::Make(center))); 732 op.addParam("center", AsValue(SkRect::Make(center)));
688 op.addParam("dst", AsValue(dst)); 733 op.addParam("dst", AsValue(dst));
689 734
690 INHERITED::onDrawBitmapNine(bitmap, center, dst, paint); 735 INHERITED::onDrawBitmapNine(bitmap, center, dst, op.paint());
691 } 736 }
692 737
693 void BenchmarkingCanvas::onDrawSprite(const SkBitmap& bitmap, int left, int top, 738 void BenchmarkingCanvas::onDrawSprite(const SkBitmap& bitmap, int left, int top,
694 const SkPaint* paint) { 739 const SkPaint* paint) {
695 AutoOp op(this, "DrawSprite", paint); 740 AutoOp op(this, "DrawSprite", paint);
696 op.addParam("bitmap", AsValue(bitmap)); 741 op.addParam("bitmap", AsValue(bitmap));
697 op.addParam("left", AsValue(SkIntToScalar(left))); 742 op.addParam("left", AsValue(SkIntToScalar(left)));
698 op.addParam("top", AsValue(SkIntToScalar(top))); 743 op.addParam("top", AsValue(SkIntToScalar(top)));
699 744
700 INHERITED::onDrawSprite(bitmap, left, top, paint); 745 INHERITED::onDrawSprite(bitmap, left, top, op.paint());
701 } 746 }
702 747
703 void BenchmarkingCanvas::onDrawText(const void* text, size_t byteLength, 748 void BenchmarkingCanvas::onDrawText(const void* text, size_t byteLength,
704 SkScalar x, SkScalar y, 749 SkScalar x, SkScalar y,
705 const SkPaint& paint) { 750 const SkPaint& paint) {
706 AutoOp op(this, "DrawText", &paint); 751 AutoOp op(this, "DrawText", &paint);
707 op.addParam("count", AsValue(SkIntToScalar(paint.countText(text, byteLength))) ); 752 op.addParam("count", AsValue(SkIntToScalar(paint.countText(text, byteLength))) );
708 op.addParam("x", AsValue(x)); 753 op.addParam("x", AsValue(x));
709 op.addParam("y", AsValue(y)); 754 op.addParam("y", AsValue(y));
710 755
711 INHERITED::onDrawText(text, byteLength, x, y, paint); 756 INHERITED::onDrawText(text, byteLength, x, y, *op.paint());
712 } 757 }
713 758
714 void BenchmarkingCanvas::onDrawPosText(const void* text, size_t byteLength, 759 void BenchmarkingCanvas::onDrawPosText(const void* text, size_t byteLength,
715 const SkPoint pos[], const SkPaint& paint ) { 760 const SkPoint pos[], const SkPaint& paint ) {
716 AutoOp op(this, "DrawPosText", &paint); 761 AutoOp op(this, "DrawPosText", &paint);
717 762
718 int count = paint.countText(text, byteLength); 763 int count = paint.countText(text, byteLength);
719 op.addParam("count", AsValue(SkIntToScalar(count))); 764 op.addParam("count", AsValue(SkIntToScalar(count)));
720 op.addParam("pos", AsListValue(pos, count)); 765 op.addParam("pos", AsListValue(pos, count));
721 766
722 INHERITED::onDrawPosText(text, byteLength, pos, paint); 767 INHERITED::onDrawPosText(text, byteLength, pos, *op.paint());
723 } 768 }
724 769
725 void BenchmarkingCanvas::onDrawPosTextH(const void* text, size_t byteLength, 770 void BenchmarkingCanvas::onDrawPosTextH(const void* text, size_t byteLength,
726 const SkScalar xpos[], SkScalar constY, 771 const SkScalar xpos[], SkScalar constY,
727 const SkPaint& paint) { 772 const SkPaint& paint) {
728 AutoOp op(this, "DrawPosTextH", &paint); 773 AutoOp op(this, "DrawPosTextH", &paint);
729 op.addParam("constY", AsValue(constY)); 774 op.addParam("constY", AsValue(constY));
730 775
731 int count = paint.countText(text, byteLength); 776 int count = paint.countText(text, byteLength);
732 op.addParam("count", AsValue(SkIntToScalar(count))); 777 op.addParam("count", AsValue(SkIntToScalar(count)));
733 op.addParam("pos", AsListValue(xpos, count)); 778 op.addParam("pos", AsListValue(xpos, count));
734 779
735 INHERITED::onDrawPosTextH(text, byteLength, xpos, constY, paint); 780 INHERITED::onDrawPosTextH(text, byteLength, xpos, constY, *op.paint());
736 } 781 }
737 782
738 void BenchmarkingCanvas::onDrawTextOnPath(const void* text, size_t byteLength, 783 void BenchmarkingCanvas::onDrawTextOnPath(const void* text, size_t byteLength,
739 const SkPath& path, const SkMatrix* ma trix, 784 const SkPath& path, const SkMatrix* ma trix,
740 const SkPaint& paint) { 785 const SkPaint& paint) {
741 AutoOp op(this, "DrawTextOnPath", &paint); 786 AutoOp op(this, "DrawTextOnPath", &paint);
742 op.addParam("count", AsValue(SkIntToScalar(paint.countText(text, byteLength))) ); 787 op.addParam("count", AsValue(SkIntToScalar(paint.countText(text, byteLength))) );
743 op.addParam("path", AsValue(path)); 788 op.addParam("path", AsValue(path));
744 if (matrix) 789 if (matrix)
745 op.addParam("matrix", AsValue(*matrix)); 790 op.addParam("matrix", AsValue(*matrix));
746 791
747 INHERITED::onDrawTextOnPath(text, byteLength, path, matrix, paint); 792 INHERITED::onDrawTextOnPath(text, byteLength, path, matrix, *op.paint());
748 } 793 }
749 794
750 void BenchmarkingCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkSc alar y, 795 void BenchmarkingCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkSc alar y,
751 const SkPaint& paint) { 796 const SkPaint& paint) {
752 DCHECK(blob); 797 DCHECK(blob);
753 AutoOp op(this, "DrawTextBlob", &paint); 798 AutoOp op(this, "DrawTextBlob", &paint);
754 op.addParam("blob", AsValue(*blob)); 799 op.addParam("blob", AsValue(*blob));
755 op.addParam("x", AsValue(x)); 800 op.addParam("x", AsValue(x));
756 op.addParam("y", AsValue(y)); 801 op.addParam("y", AsValue(y));
757 802
758 INHERITED::onDrawTextBlob(blob, x, y, paint); 803 INHERITED::onDrawTextBlob(blob, x, y, *op.paint());
759 } 804 }
760 805
761 } // namespace skia 806 } // namespace skia
OLDNEW
« no previous file with comments | « skia/ext/benchmarking_canvas.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698