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

Side by Side Diff: samplecode/SampleSlides.cpp

Issue 176873004: Builder class for SkLayerRasterizer. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Make ReadLayers private Created 6 years, 10 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 | « samplecode/SamplePathEffects.cpp ('k') | src/effects/SkLayerRasterizer.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 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 #include "SampleCode.h" 8 #include "SampleCode.h"
9 #include "SkBlurMask.h" 9 #include "SkBlurMask.h"
10 #include "SkBlurMaskFilter.h" 10 #include "SkBlurMaskFilter.h"
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 fRecs[i].fVerts, fRecs[i].fTexs, 469 fRecs[i].fVerts, fRecs[i].fTexs,
470 NULL, NULL, NULL, 0, paint); 470 NULL, NULL, NULL, 0, paint);
471 canvas->restore(); 471 canvas->restore();
472 472
473 canvas->translate(0, SkIntToScalar(250)); 473 canvas->translate(0, SkIntToScalar(250));
474 } 474 }
475 } 475 }
476 476
477 /////////////////////////////////////////////////////////////////////////////// 477 ///////////////////////////////////////////////////////////////////////////////
478 478
479 static void r0(SkLayerRasterizer* rast, SkPaint& p) 479 static void r0(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
480 { 480 {
481 p.setMaskFilter(SkBlurMaskFilter::Create(SkBlurMaskFilter::kNormal_BlurStyle , 481 p.setMaskFilter(SkBlurMaskFilter::Create(SkBlurMaskFilter::kNormal_BlurStyle ,
482 SkBlurMask::ConvertRadiusToSigma(Sk IntToScalar(3))))->unref(); 482 SkBlurMask::ConvertRadiusToSigma(Sk IntToScalar(3))))->unref();
483 rast->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); 483 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
484 484
485 p.setMaskFilter(NULL); 485 p.setMaskFilter(NULL);
486 p.setStyle(SkPaint::kStroke_Style); 486 p.setStyle(SkPaint::kStroke_Style);
487 p.setStrokeWidth(SK_Scalar1); 487 p.setStrokeWidth(SK_Scalar1);
488 rast->addLayer(p); 488 rastBuilder->addLayer(p);
489 489
490 p.setAlpha(0x11); 490 p.setAlpha(0x11);
491 p.setStyle(SkPaint::kFill_Style); 491 p.setStyle(SkPaint::kFill_Style);
492 p.setXfermodeMode(SkXfermode::kSrc_Mode); 492 p.setXfermodeMode(SkXfermode::kSrc_Mode);
493 rast->addLayer(p); 493 rastBuilder->addLayer(p);
494 } 494 }
495 495
496 static void r1(SkLayerRasterizer* rast, SkPaint& p) 496 static void r1(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
497 { 497 {
498 rast->addLayer(p); 498 rastBuilder->addLayer(p);
499 499
500 p.setAlpha(0x40); 500 p.setAlpha(0x40);
501 p.setXfermodeMode(SkXfermode::kSrc_Mode); 501 p.setXfermodeMode(SkXfermode::kSrc_Mode);
502 p.setStyle(SkPaint::kStroke_Style); 502 p.setStyle(SkPaint::kStroke_Style);
503 p.setStrokeWidth(SK_Scalar1*2); 503 p.setStrokeWidth(SK_Scalar1*2);
504 rast->addLayer(p); 504 rastBuilder->addLayer(p);
505 } 505 }
506 506
507 static void r2(SkLayerRasterizer* rast, SkPaint& p) 507 static void r2(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
508 { 508 {
509 p.setStyle(SkPaint::kStrokeAndFill_Style); 509 p.setStyle(SkPaint::kStrokeAndFill_Style);
510 p.setStrokeWidth(SK_Scalar1*4); 510 p.setStrokeWidth(SK_Scalar1*4);
511 rast->addLayer(p); 511 rastBuilder->addLayer(p);
512 512
513 p.setStyle(SkPaint::kStroke_Style); 513 p.setStyle(SkPaint::kStroke_Style);
514 p.setStrokeWidth(SK_Scalar1*3/2); 514 p.setStrokeWidth(SK_Scalar1*3/2);
515 p.setXfermodeMode(SkXfermode::kClear_Mode); 515 p.setXfermodeMode(SkXfermode::kClear_Mode);
516 rast->addLayer(p); 516 rastBuilder->addLayer(p);
517 } 517 }
518 518
519 static void r3(SkLayerRasterizer* rast, SkPaint& p) 519 static void r3(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
520 { 520 {
521 p.setStyle(SkPaint::kStroke_Style); 521 p.setStyle(SkPaint::kStroke_Style);
522 p.setStrokeWidth(SK_Scalar1*3); 522 p.setStrokeWidth(SK_Scalar1*3);
523 rast->addLayer(p); 523 rastBuilder->addLayer(p);
524 524
525 p.setAlpha(0x20); 525 p.setAlpha(0x20);
526 p.setStyle(SkPaint::kFill_Style); 526 p.setStyle(SkPaint::kFill_Style);
527 p.setXfermodeMode(SkXfermode::kSrc_Mode); 527 p.setXfermodeMode(SkXfermode::kSrc_Mode);
528 rast->addLayer(p); 528 rastBuilder->addLayer(p);
529 } 529 }
530 530
531 static void r4(SkLayerRasterizer* rast, SkPaint& p) 531 static void r4(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
532 { 532 {
533 p.setAlpha(0x60); 533 p.setAlpha(0x60);
534 rast->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); 534 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
535 535
536 p.setAlpha(0xFF); 536 p.setAlpha(0xFF);
537 p.setXfermodeMode(SkXfermode::kClear_Mode); 537 p.setXfermodeMode(SkXfermode::kClear_Mode);
538 rast->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2); 538 rastBuilder->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2);
539 539
540 p.setXfermode(NULL); 540 p.setXfermode(NULL);
541 rast->addLayer(p); 541 rastBuilder->addLayer(p);
542 } 542 }
543 543
544 #include "SkDiscretePathEffect.h" 544 #include "SkDiscretePathEffect.h"
545 545
546 static void r5(SkLayerRasterizer* rast, SkPaint& p) 546 static void r5(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
547 { 547 {
548 rast->addLayer(p); 548 rastBuilder->addLayer(p);
549 549
550 p.setPathEffect(SkDiscretePathEffect::Create(SK_Scalar1*4, SK_Scalar1*3))->u nref(); 550 p.setPathEffect(SkDiscretePathEffect::Create(SK_Scalar1*4, SK_Scalar1*3))->u nref();
551 p.setXfermodeMode(SkXfermode::kSrcOut_Mode); 551 p.setXfermodeMode(SkXfermode::kSrcOut_Mode);
552 rast->addLayer(p); 552 rastBuilder->addLayer(p);
553 } 553 }
554 554
555 static void r6(SkLayerRasterizer* rast, SkPaint& p) 555 static void r6(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
556 { 556 {
557 rast->addLayer(p); 557 rastBuilder->addLayer(p);
558 558
559 p.setAntiAlias(false); 559 p.setAntiAlias(false);
560 SkLayerRasterizer* rast2 = new SkLayerRasterizer; 560 SkLayerRasterizer::Builder rastBuilder2;
561 r5(rast2, p); 561 r5(&rastBuilder2, p);
562 p.setRasterizer(rast2)->unref(); 562 p.setRasterizer(rastBuilder2.detachRasterizer())->unref();
563 p.setXfermodeMode(SkXfermode::kClear_Mode); 563 p.setXfermodeMode(SkXfermode::kClear_Mode);
564 rast->addLayer(p); 564 rastBuilder->addLayer(p);
565 } 565 }
566 566
567 #include "Sk2DPathEffect.h" 567 #include "Sk2DPathEffect.h"
568 568
569 static SkPathEffect* MakeDotEffect(SkScalar radius, const SkMatrix& matrix) { 569 static SkPathEffect* MakeDotEffect(SkScalar radius, const SkMatrix& matrix) {
570 SkPath path; 570 SkPath path;
571 path.addCircle(0, 0, radius); 571 path.addCircle(0, 0, radius);
572 return SkPath2DPathEffect::Create(matrix, path); 572 return SkPath2DPathEffect::Create(matrix, path);
573 } 573 }
574 574
575 static void r7(SkLayerRasterizer* rast, SkPaint& p) 575 static void r7(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
576 { 576 {
577 SkMatrix lattice; 577 SkMatrix lattice;
578 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0); 578 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0);
579 lattice.postSkew(SK_Scalar1/3, 0, 0, 0); 579 lattice.postSkew(SK_Scalar1/3, 0, 0, 0);
580 p.setPathEffect(MakeDotEffect(SK_Scalar1*4, lattice))->unref(); 580 p.setPathEffect(MakeDotEffect(SK_Scalar1*4, lattice))->unref();
581 rast->addLayer(p); 581 rastBuilder->addLayer(p);
582 } 582 }
583 583
584 static void r8(SkLayerRasterizer* rast, SkPaint& p) 584 static void r8(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
585 { 585 {
586 rast->addLayer(p); 586 rastBuilder->addLayer(p);
587 587
588 SkMatrix lattice; 588 SkMatrix lattice;
589 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0); 589 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0);
590 lattice.postSkew(SK_Scalar1/3, 0, 0, 0); 590 lattice.postSkew(SK_Scalar1/3, 0, 0, 0);
591 p.setPathEffect(MakeDotEffect(SK_Scalar1*2, lattice))->unref(); 591 p.setPathEffect(MakeDotEffect(SK_Scalar1*2, lattice))->unref();
592 p.setXfermodeMode(SkXfermode::kClear_Mode); 592 p.setXfermodeMode(SkXfermode::kClear_Mode);
593 rast->addLayer(p); 593 rastBuilder->addLayer(p);
594 594
595 p.setPathEffect(NULL); 595 p.setPathEffect(NULL);
596 p.setXfermode(NULL); 596 p.setXfermode(NULL);
597 p.setStyle(SkPaint::kStroke_Style); 597 p.setStyle(SkPaint::kStroke_Style);
598 p.setStrokeWidth(SK_Scalar1); 598 p.setStrokeWidth(SK_Scalar1);
599 rast->addLayer(p); 599 rastBuilder->addLayer(p);
600 } 600 }
601 601
602 static void r9(SkLayerRasterizer* rast, SkPaint& p) 602 static void r9(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
603 { 603 {
604 rast->addLayer(p); 604 rastBuilder->addLayer(p);
605 605
606 SkMatrix lattice; 606 SkMatrix lattice;
607 lattice.setScale(SK_Scalar1, SK_Scalar1*6, 0, 0); 607 lattice.setScale(SK_Scalar1, SK_Scalar1*6, 0, 0);
608 lattice.postRotate(SkIntToScalar(30), 0, 0); 608 lattice.postRotate(SkIntToScalar(30), 0, 0);
609 p.setPathEffect(SkLine2DPathEffect::Create(SK_Scalar1*2, lattice))->unref(); 609 p.setPathEffect(SkLine2DPathEffect::Create(SK_Scalar1*2, lattice))->unref();
610 p.setXfermodeMode(SkXfermode::kClear_Mode); 610 p.setXfermodeMode(SkXfermode::kClear_Mode);
611 rast->addLayer(p); 611 rastBuilder->addLayer(p);
612 612
613 p.setPathEffect(NULL); 613 p.setPathEffect(NULL);
614 p.setXfermode(NULL); 614 p.setXfermode(NULL);
615 p.setStyle(SkPaint::kStroke_Style); 615 p.setStyle(SkPaint::kStroke_Style);
616 p.setStrokeWidth(SK_Scalar1); 616 p.setStrokeWidth(SK_Scalar1);
617 rast->addLayer(p); 617 rastBuilder->addLayer(p);
618 } 618 }
619 619
620 typedef void (*raster_proc)(SkLayerRasterizer*, SkPaint&); 620 typedef void (*raster_proc)(SkLayerRasterizer::Builder*, SkPaint&);
621 621
622 static const raster_proc gRastProcs[] = { 622 static const raster_proc gRastProcs[] = {
623 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9 623 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9
624 }; 624 };
625 625
626 static void apply_shader(SkPaint* paint, int index) { 626 static void apply_shader(SkPaint* paint, int index) {
627 raster_proc proc = gRastProcs[index]; 627 raster_proc proc = gRastProcs[index];
628 SkPaint p; 628 SkPaint p;
629 SkLayerRasterizer* rast = new SkLayerRasterizer; 629 SkLayerRasterizer::Builder rastBuilder;
630 630
631 p.setAntiAlias(true); 631 p.setAntiAlias(true);
632 proc(rast, p); 632 proc(&rastBuilder, p);
633 paint->setRasterizer(rast)->unref(); 633 paint->setRasterizer(rastBuilder.detachRasterizer())->unref();
634 paint->setColor(SK_ColorBLUE); 634 paint->setColor(SK_ColorBLUE);
635 } 635 }
636 636
637 #include "SkTypeface.h" 637 #include "SkTypeface.h"
638 638
639 static void texteffect_slide(SkCanvas* canvas) { 639 static void texteffect_slide(SkCanvas* canvas) {
640 const char* str = "Google"; 640 const char* str = "Google";
641 size_t len = strlen(str); 641 size_t len = strlen(str);
642 SkScalar x = 20; 642 SkScalar x = 20;
643 SkScalar y = 80; 643 SkScalar y = 80;
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 } 725 }
726 726
727 private: 727 private:
728 typedef SampleView INHERITED; 728 typedef SampleView INHERITED;
729 }; 729 };
730 730
731 ////////////////////////////////////////////////////////////////////////////// 731 //////////////////////////////////////////////////////////////////////////////
732 732
733 static SkView* MyFactory() { return new SlideView; } 733 static SkView* MyFactory() { return new SlideView; }
734 static SkViewRegister reg(MyFactory); 734 static SkViewRegister reg(MyFactory);
OLDNEW
« no previous file with comments | « samplecode/SamplePathEffects.cpp ('k') | src/effects/SkLayerRasterizer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698