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

Side by Side Diff: tests/ImageFilterTest.cpp

Issue 313613004: Alter SkCanvas::drawPicture (devirtualize, take const SkPicture, take pointer) (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Add staging entry point for Chromium and Android Created 6 years, 6 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
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 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 "SkBicubicImageFilter.h" 8 #include "SkBicubicImageFilter.h"
9 #include "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkBitmapDevice.h" 10 #include "SkBitmapDevice.h"
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
484 recordingCanvas->saveLayer(NULL, &paint); 484 recordingCanvas->saveLayer(NULL, &paint);
485 SkPaint solidPaint; 485 SkPaint solidPaint;
486 solidPaint.setColor(0xFFFFFFFF); 486 solidPaint.setColor(0xFFFFFFFF);
487 recordingCanvas->save(); 487 recordingCanvas->save();
488 recordingCanvas->scale(SkIntToScalar(10), SkIntToScalar(10)); 488 recordingCanvas->scale(SkIntToScalar(10), SkIntToScalar(10));
489 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(100, 100)), solidPain t); 489 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(100, 100)), solidPain t);
490 recordingCanvas->restore(); // scale 490 recordingCanvas->restore(); // scale
491 recordingCanvas->restore(); // saveLayer 491 recordingCanvas->restore(); // saveLayer
492 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); 492 SkAutoTUnref<SkPicture> picture(recorder.endRecording());
493 493
494 canvas.drawPicture(*picture); 494 canvas.drawPicture(picture);
495 } 495 }
496 496
497 DEF_TEST(ImageFilterPictureImageFilterTest, reporter) { 497 DEF_TEST(ImageFilterPictureImageFilterTest, reporter) {
498 498
499 SkRTreeFactory factory; 499 SkRTreeFactory factory;
500 SkPictureRecorder recorder; 500 SkPictureRecorder recorder;
501 SkCanvas* recordingCanvas = recorder.beginRecording(1, 1, &factory, 0); 501 SkCanvas* recordingCanvas = recorder.beginRecording(1, 1, &factory, 0);
502 502
503 // Create an SkPicture which simply draws a green 1x1 rectangle. 503 // Create an SkPicture which simply draws a green 1x1 rectangle.
504 SkPaint greenPaint; 504 SkPaint greenPaint;
(...skipping 17 matching lines...) Expand all
522 outerCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), redPaintWithFilte r); 522 outerCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), redPaintWithFilte r);
523 SkAutoTUnref<SkPicture> outerPicture(outerRecorder.endRecording()); 523 SkAutoTUnref<SkPicture> outerPicture(outerRecorder.endRecording());
524 524
525 SkBitmap bitmap; 525 SkBitmap bitmap;
526 bitmap.allocN32Pixels(1, 1); 526 bitmap.allocN32Pixels(1, 1);
527 SkBitmapDevice device(bitmap); 527 SkBitmapDevice device(bitmap);
528 SkCanvas canvas(&device); 528 SkCanvas canvas(&device);
529 529
530 // The result here should be green, since the filter replaces the primitive' s red interior. 530 // The result here should be green, since the filter replaces the primitive' s red interior.
531 canvas.clear(0x0); 531 canvas.clear(0x0);
532 canvas.drawPicture(*outerPicture); 532 canvas.drawPicture(outerPicture);
533 uint32_t pixel = *bitmap.getAddr32(0, 0); 533 uint32_t pixel = *bitmap.getAddr32(0, 0);
534 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); 534 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN);
535 535
536 // Check that, for now, SkPictureImageFilter does not serialize or 536 // Check that, for now, SkPictureImageFilter does not serialize or
537 // deserialize its contained picture when the filter is serialized 537 // deserialize its contained picture when the filter is serialized
538 // cross-process. Do this by "laundering" it through SkValidatingReadBuffer. 538 // cross-process. Do this by "laundering" it through SkValidatingReadBuffer.
539 SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(imageFilter.get() )); 539 SkAutoTUnref<SkData> data(SkValidatingSerializeFlattenable(imageFilter.get() ));
540 SkAutoTUnref<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable( 540 SkAutoTUnref<SkFlattenable> flattenable(SkValidatingDeserializeFlattenable(
541 data->data(), data->size(), SkImageFilter::GetFlattenableType())); 541 data->data(), data->size(), SkImageFilter::GetFlattenableType()));
542 SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.g et()); 542 SkImageFilter* unflattenedFilter = static_cast<SkImageFilter*>(flattenable.g et());
543 543
544 redPaintWithFilter.setImageFilter(unflattenedFilter); 544 redPaintWithFilter.setImageFilter(unflattenedFilter);
545 SkPictureRecorder crossProcessRecorder; 545 SkPictureRecorder crossProcessRecorder;
546 SkCanvas* crossProcessCanvas = crossProcessRecorder.beginRecording(1, 1, &fa ctory, 0); 546 SkCanvas* crossProcessCanvas = crossProcessRecorder.beginRecording(1, 1, &fa ctory, 0);
547 crossProcessCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), redPaintWi thFilter); 547 crossProcessCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(1, 1)), redPaintWi thFilter);
548 SkAutoTUnref<SkPicture> crossProcessPicture(crossProcessRecorder.endRecordin g()); 548 SkAutoTUnref<SkPicture> crossProcessPicture(crossProcessRecorder.endRecordin g());
549 549
550 canvas.clear(0x0); 550 canvas.clear(0x0);
551 canvas.drawPicture(*crossProcessPicture); 551 canvas.drawPicture(crossProcessPicture);
552 pixel = *bitmap.getAddr32(0, 0); 552 pixel = *bitmap.getAddr32(0, 0);
553 // The result here should not be green, since the filter draws nothing. 553 // The result here should not be green, since the filter draws nothing.
554 REPORTER_ASSERT(reporter, pixel != SK_ColorGREEN); 554 REPORTER_ASSERT(reporter, pixel != SK_ColorGREEN);
555 } 555 }
556 556
557 DEF_TEST(ImageFilterEmptySaveLayerTest, reporter) { 557 DEF_TEST(ImageFilterEmptySaveLayerTest, reporter) {
558 558
559 // Even when there's an empty saveLayer()/restore(), ensure that an image 559 // Even when there's an empty saveLayer()/restore(), ensure that an image
560 // filter or color filter which affects transparent black still draws. 560 // filter or color filter which affects transparent black still draws.
561 561
(...skipping 15 matching lines...) Expand all
577 colorFilterPaint.setColorFilter(green.get()); 577 colorFilterPaint.setColorFilter(green.get());
578 578
579 SkRect bounds = SkRect::MakeWH(10, 10); 579 SkRect bounds = SkRect::MakeWH(10, 10);
580 580
581 SkCanvas* recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); 581 SkCanvas* recordingCanvas = recorder.beginRecording(10, 10, &factory, 0);
582 recordingCanvas->saveLayer(&bounds, &imageFilterPaint); 582 recordingCanvas->saveLayer(&bounds, &imageFilterPaint);
583 recordingCanvas->restore(); 583 recordingCanvas->restore();
584 SkAutoTUnref<SkPicture> picture(recorder.endRecording()); 584 SkAutoTUnref<SkPicture> picture(recorder.endRecording());
585 585
586 canvas.clear(0); 586 canvas.clear(0);
587 canvas.drawPicture(*picture); 587 canvas.drawPicture(picture);
588 uint32_t pixel = *bitmap.getAddr32(0, 0); 588 uint32_t pixel = *bitmap.getAddr32(0, 0);
589 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); 589 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN);
590 590
591 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); 591 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0);
592 recordingCanvas->saveLayer(NULL, &imageFilterPaint); 592 recordingCanvas->saveLayer(NULL, &imageFilterPaint);
593 recordingCanvas->restore(); 593 recordingCanvas->restore();
594 SkAutoTUnref<SkPicture> picture2(recorder.endRecording()); 594 SkAutoTUnref<SkPicture> picture2(recorder.endRecording());
595 595
596 canvas.clear(0); 596 canvas.clear(0);
597 canvas.drawPicture(*picture2); 597 canvas.drawPicture(picture2);
598 pixel = *bitmap.getAddr32(0, 0); 598 pixel = *bitmap.getAddr32(0, 0);
599 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); 599 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN);
600 600
601 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0); 601 recordingCanvas = recorder.beginRecording(10, 10, &factory, 0);
602 recordingCanvas->saveLayer(&bounds, &colorFilterPaint); 602 recordingCanvas->saveLayer(&bounds, &colorFilterPaint);
603 recordingCanvas->restore(); 603 recordingCanvas->restore();
604 SkAutoTUnref<SkPicture> picture3(recorder.endRecording()); 604 SkAutoTUnref<SkPicture> picture3(recorder.endRecording());
605 605
606 canvas.clear(0); 606 canvas.clear(0);
607 canvas.drawPicture(*picture3); 607 canvas.drawPicture(picture3);
608 pixel = *bitmap.getAddr32(0, 0); 608 pixel = *bitmap.getAddr32(0, 0);
609 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN); 609 REPORTER_ASSERT(reporter, pixel == SK_ColorGREEN);
610 } 610 }
611 611
612 static void test_huge_blur(SkBaseDevice* device, skiatest::Reporter* reporter) { 612 static void test_huge_blur(SkBaseDevice* device, skiatest::Reporter* reporter) {
613 SkCanvas canvas(device); 613 SkCanvas canvas(device);
614 614
615 SkBitmap bitmap; 615 SkBitmap bitmap;
616 bitmap.allocN32Pixels(100, 100); 616 bitmap.allocN32Pixels(100, 100);
617 bitmap.eraseARGB(0, 0, 0, 0); 617 bitmap.eraseARGB(0, 0, 0, 0);
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 } 753 }
754 754
755 DEF_GPUTEST(XfermodeImageFilterCroppedInputGPU, reporter, factory) { 755 DEF_GPUTEST(XfermodeImageFilterCroppedInputGPU, reporter, factory) {
756 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0)); 756 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp e>(0));
757 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context, 757 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context,
758 SkImageInfo::MakeN32Pre mul(1, 1), 758 SkImageInfo::MakeN32Pre mul(1, 1),
759 0)); 759 0));
760 test_xfermode_cropped_input(device, reporter); 760 test_xfermode_cropped_input(device, reporter);
761 } 761 }
762 #endif 762 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698