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