| OLD | NEW |
| 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 "SkBitmap.h" | 8 #include "SkBitmap.h" |
| 9 #include "SkBitmapDevice.h" | 9 #include "SkBitmapDevice.h" |
| 10 #include "SkBitmapSource.h" | 10 #include "SkBitmapSource.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 | 51 |
| 52 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context& ctx, | 52 virtual bool onFilterImage(Proxy*, const SkBitmap& src, const Context& ctx, |
| 53 SkBitmap* result, SkIPoint* offset) const SK_OVER
RIDE { | 53 SkBitmap* result, SkIPoint* offset) const SK_OVER
RIDE { |
| 54 REPORTER_ASSERT(fReporter, ctx.ctm() == fExpectedMatrix); | 54 REPORTER_ASSERT(fReporter, ctx.ctm() == fExpectedMatrix); |
| 55 return true; | 55 return true; |
| 56 } | 56 } |
| 57 | 57 |
| 58 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(MatrixTestImageFilter) | 58 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(MatrixTestImageFilter) |
| 59 | 59 |
| 60 protected: | 60 protected: |
| 61 #ifdef SK_SUPPORT_LEGACY_DEEPFLATTENING | |
| 62 explicit MatrixTestImageFilter(SkReadBuffer& buffer) : SkImageFilter(0, NULL
) { | |
| 63 fReporter = static_cast<skiatest::Reporter*>(buffer.readFunctionPtr()); | |
| 64 buffer.readMatrix(&fExpectedMatrix); | |
| 65 } | |
| 66 #endif | |
| 67 | |
| 68 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE { | 61 virtual void flatten(SkWriteBuffer& buffer) const SK_OVERRIDE { |
| 69 this->INHERITED::flatten(buffer); | 62 this->INHERITED::flatten(buffer); |
| 70 buffer.writeFunctionPtr(fReporter); | 63 buffer.writeFunctionPtr(fReporter); |
| 71 buffer.writeMatrix(fExpectedMatrix); | 64 buffer.writeMatrix(fExpectedMatrix); |
| 72 } | 65 } |
| 73 | 66 |
| 74 private: | 67 private: |
| 75 skiatest::Reporter* fReporter; | 68 skiatest::Reporter* fReporter; |
| 76 SkMatrix fExpectedMatrix; | 69 SkMatrix fExpectedMatrix; |
| 77 | 70 |
| 78 typedef SkImageFilter INHERITED; | 71 typedef SkImageFilter INHERITED; |
| 79 }; | 72 }; |
| 80 | 73 |
| 81 } | 74 } |
| 82 | 75 |
| 83 SkFlattenable* MatrixTestImageFilter::CreateProc(SkReadBuffer& buffer) { | 76 SkFlattenable* MatrixTestImageFilter::CreateProc(SkReadBuffer& buffer) { |
| 84 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); | 77 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); |
| 85 skiatest::Reporter* reporter = (skiatest::Reporter*)buffer.readFunctionPtr()
; | 78 skiatest::Reporter* reporter = (skiatest::Reporter*)buffer.readFunctionPtr()
; |
| 86 SkMatrix matrix; | 79 SkMatrix matrix; |
| 87 buffer.readMatrix(&matrix); | 80 buffer.readMatrix(&matrix); |
| (...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 480 } | 473 } |
| 481 } | 474 } |
| 482 } | 475 } |
| 483 } | 476 } |
| 484 | 477 |
| 485 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { | 478 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { |
| 486 SkSafeUnref(filters[i].fFilter); | 479 SkSafeUnref(filters[i].fFilter); |
| 487 } | 480 } |
| 488 } | 481 } |
| 489 | 482 |
| 490 static void draw_saveLayer_picture(int width, int height, int tileSize, | 483 static void draw_saveLayer_picture(int width, int height, int tileSize, |
| 491 SkBBHFactory* factory, SkBitmap* result) { | 484 SkBBHFactory* factory, SkBitmap* result) { |
| 492 | 485 |
| 493 SkMatrix matrix; | 486 SkMatrix matrix; |
| 494 matrix.setTranslate(SkIntToScalar(50), 0); | 487 matrix.setTranslate(SkIntToScalar(50), 0); |
| 495 | 488 |
| 496 SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(SK_ColorWHITE
, SkXfermode::kSrc_Mode)); | 489 SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(SK_ColorWHITE
, SkXfermode::kSrc_Mode)); |
| 497 SkAutoTUnref<SkImageFilter> cfif(SkColorFilterImageFilter::Create(cf.get()))
; | 490 SkAutoTUnref<SkImageFilter> cfif(SkColorFilterImageFilter::Create(cf.get()))
; |
| 498 SkAutoTUnref<SkImageFilter> imageFilter(SkMatrixImageFilter::Create(matrix,
SkPaint::kNone_FilterLevel, cfif.get())); | 491 SkAutoTUnref<SkImageFilter> imageFilter(SkMatrixImageFilter::Create(matrix,
SkPaint::kNone_FilterLevel, cfif.get())); |
| 499 | 492 |
| 500 SkPaint paint; | 493 SkPaint paint; |
| 501 paint.setImageFilter(imageFilter.get()); | 494 paint.setImageFilter(imageFilter.get()); |
| 502 SkPictureRecorder recorder; | 495 SkPictureRecorder recorder; |
| 503 SkRect bounds = SkRect::Make(SkIRect::MakeXYWH(0, 0, 50, 50)); | 496 SkRect bounds = SkRect::Make(SkIRect::MakeXYWH(0, 0, 50, 50)); |
| 504 SkCanvas* recordingCanvas = recorder.beginRecording(SkIntToScalar(width), | 497 SkCanvas* recordingCanvas = recorder.beginRecording(SkIntToScalar(width), |
| 505 SkIntToScalar(height), | 498 SkIntToScalar(height), |
| 506 factory, 0); | 499 factory, 0); |
| 507 recordingCanvas->translate(-55, 0); | 500 recordingCanvas->translate(-55, 0); |
| 508 recordingCanvas->saveLayer(&bounds, &paint); | 501 recordingCanvas->saveLayer(&bounds, &paint); |
| 509 recordingCanvas->restore(); | 502 recordingCanvas->restore(); |
| 510 SkAutoTUnref<SkPicture> picture1(recorder.endRecording()); | 503 SkAutoTUnref<SkPicture> picture1(recorder.endRecording()); |
| 511 | 504 |
| 512 result->allocN32Pixels(width, height); | 505 result->allocN32Pixels(width, height); |
| 513 SkCanvas canvas(*result); | 506 SkCanvas canvas(*result); |
| 514 canvas.clear(0); | 507 canvas.clear(0); |
| 515 canvas.clipRect(SkRect::Make(SkIRect::MakeWH(tileSize, tileSize))); | 508 canvas.clipRect(SkRect::Make(SkIRect::MakeWH(tileSize, tileSize))); |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 618 SkCanvas canvas2(result2); | 611 SkCanvas canvas2(result2); |
| 619 int tileSize = 8; | 612 int tileSize = 8; |
| 620 | 613 |
| 621 canvas1.clear(0); | 614 canvas1.clear(0); |
| 622 canvas2.clear(0); | 615 canvas2.clear(0); |
| 623 | 616 |
| 624 SkRTreeFactory factory; | 617 SkRTreeFactory factory; |
| 625 | 618 |
| 626 SkPictureRecorder recorder1, recorder2; | 619 SkPictureRecorder recorder1, recorder2; |
| 627 // The only difference between these two pictures is that one has RTree acel
eration. | 620 // The only difference between these two pictures is that one has RTree acel
eration. |
| 628 SkCanvas* recordingCanvas1 = recorder1.beginRecording(SkIntToScalar(width), | 621 SkCanvas* recordingCanvas1 = recorder1.beginRecording(SkIntToScalar(width), |
| 629 SkIntToScalar(height),
| 622 SkIntToScalar(height), |
| 630 NULL, 0); | 623 NULL, 0); |
| 631 SkCanvas* recordingCanvas2 = recorder2.beginRecording(SkIntToScalar(width), | 624 SkCanvas* recordingCanvas2 = recorder2.beginRecording(SkIntToScalar(width), |
| 632 SkIntToScalar(height),
| 625 SkIntToScalar(height), |
| 633 &factory, 0); | 626 &factory, 0); |
| 634 draw_blurred_rect(recordingCanvas1); | 627 draw_blurred_rect(recordingCanvas1); |
| 635 draw_blurred_rect(recordingCanvas2); | 628 draw_blurred_rect(recordingCanvas2); |
| 636 SkAutoTUnref<SkPicture> picture1(recorder1.endRecording()); | 629 SkAutoTUnref<SkPicture> picture1(recorder1.endRecording()); |
| 637 SkAutoTUnref<SkPicture> picture2(recorder2.endRecording()); | 630 SkAutoTUnref<SkPicture> picture2(recorder2.endRecording()); |
| 638 for (int y = 0; y < height; y += tileSize) { | 631 for (int y = 0; y < height; y += tileSize) { |
| 639 for (int x = 0; x < width; x += tileSize) { | 632 for (int x = 0; x < width; x += tileSize) { |
| 640 SkRect tileRect = SkRect::Make(SkIRect::MakeXYWH(x, y, tileSize, til
eSize)); | 633 SkRect tileRect = SkRect::Make(SkIRect::MakeXYWH(x, y, tileSize, til
eSize)); |
| 641 draw_picture_clipped(&canvas1, tileRect, picture1); | 634 draw_picture_clipped(&canvas1, tileRect, picture1); |
| 642 draw_picture_clipped(&canvas2, tileRect, picture2); | 635 draw_picture_clipped(&canvas2, tileRect, picture2); |
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1095 | 1088 |
| 1096 DEF_GPUTEST(TestNegativeBlurSigmaGPU, reporter, factory) { | 1089 DEF_GPUTEST(TestNegativeBlurSigmaGPU, reporter, factory) { |
| 1097 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp
e>(0)); | 1090 GrContext* context = factory->get(static_cast<GrContextFactory::GLContextTyp
e>(0)); |
| 1098 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context, | 1091 SkAutoTUnref<SkGpuDevice> device(SkGpuDevice::Create(context, |
| 1099 SkImageInfo::MakeN32Pre
mul(1, 1), | 1092 SkImageInfo::MakeN32Pre
mul(1, 1), |
| 1100 gProps, | 1093 gProps, |
| 1101 0)); | 1094 0)); |
| 1102 test_negative_blur_sigma(device, reporter); | 1095 test_negative_blur_sigma(device, reporter); |
| 1103 } | 1096 } |
| 1104 #endif | 1097 #endif |
| OLD | NEW |