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 "SkBlurImageFilter.h" | 10 #include "SkBlurImageFilter.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 #include "GrContext.h" | 44 #include "GrContext.h" |
45 #include "SkGpuDevice.h" | 45 #include "SkGpuDevice.h" |
46 #endif | 46 #endif |
47 | 47 |
48 static const int kBitmapSize = 4; | 48 static const int kBitmapSize = 4; |
49 | 49 |
50 namespace { | 50 namespace { |
51 | 51 |
52 class MatrixTestImageFilter : public SkImageFilter { | 52 class MatrixTestImageFilter : public SkImageFilter { |
53 public: | 53 public: |
54 MatrixTestImageFilter(skiatest::Reporter* reporter, const SkMatrix& expected
Matrix) | 54 static sk_sp<SkImageFilter> Make(skiatest::Reporter* reporter, |
55 : SkImageFilter(0, nullptr), fReporter(reporter), fExpectedMatrix(expected
Matrix) { | 55 const SkMatrix& expectedMatrix) { |
| 56 return sk_sp<SkImageFilter>(new MatrixTestImageFilter(reporter, expected
Matrix)); |
56 } | 57 } |
57 | 58 |
| 59 SK_TO_STRING_OVERRIDE() |
| 60 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(MatrixTestImageFilter) |
| 61 |
| 62 protected: |
58 bool onFilterImageDeprecated(Proxy*, const SkBitmap& src, const Context& ctx
, | 63 bool onFilterImageDeprecated(Proxy*, const SkBitmap& src, const Context& ctx
, |
59 SkBitmap* result, SkIPoint* offset) const overr
ide { | 64 SkBitmap* result, SkIPoint* offset) const overr
ide { |
60 REPORTER_ASSERT(fReporter, ctx.ctm() == fExpectedMatrix); | 65 REPORTER_ASSERT(fReporter, ctx.ctm() == fExpectedMatrix); |
61 return true; | 66 return true; |
62 } | 67 } |
63 | 68 |
64 SK_TO_STRING_OVERRIDE() | |
65 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(MatrixTestImageFilter) | |
66 | |
67 protected: | |
68 void flatten(SkWriteBuffer& buffer) const override { | 69 void flatten(SkWriteBuffer& buffer) const override { |
69 this->INHERITED::flatten(buffer); | 70 this->INHERITED::flatten(buffer); |
70 buffer.writeFunctionPtr(fReporter); | 71 buffer.writeFunctionPtr(fReporter); |
71 buffer.writeMatrix(fExpectedMatrix); | 72 buffer.writeMatrix(fExpectedMatrix); |
72 } | 73 } |
73 | 74 |
74 private: | 75 private: |
| 76 MatrixTestImageFilter(skiatest::Reporter* reporter, const SkMatrix& expected
Matrix) |
| 77 : INHERITED(nullptr, 0, nullptr) |
| 78 , fReporter(reporter) |
| 79 , fExpectedMatrix(expectedMatrix) { |
| 80 } |
| 81 |
75 skiatest::Reporter* fReporter; | 82 skiatest::Reporter* fReporter; |
76 SkMatrix fExpectedMatrix; | 83 SkMatrix fExpectedMatrix; |
77 | 84 |
78 typedef SkImageFilter INHERITED; | 85 typedef SkImageFilter INHERITED; |
79 }; | 86 }; |
80 | 87 |
81 void draw_gradient_circle(SkCanvas* canvas, int width, int height) { | 88 void draw_gradient_circle(SkCanvas* canvas, int width, int height) { |
82 SkScalar x = SkIntToScalar(width / 2); | 89 SkScalar x = SkIntToScalar(width / 2); |
83 SkScalar y = SkIntToScalar(height / 2); | 90 SkScalar y = SkIntToScalar(height / 2); |
84 SkScalar radius = SkMinScalar(x, y) * 0.8f; | 91 SkScalar radius = SkMinScalar(x, y) * 0.8f; |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 SkTArray<Filter> fFilters; | 224 SkTArray<Filter> fFilters; |
218 }; | 225 }; |
219 | 226 |
220 } | 227 } |
221 | 228 |
222 sk_sp<SkFlattenable> MatrixTestImageFilter::CreateProc(SkReadBuffer& buffer) { | 229 sk_sp<SkFlattenable> MatrixTestImageFilter::CreateProc(SkReadBuffer& buffer) { |
223 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); | 230 SK_IMAGEFILTER_UNFLATTEN_COMMON(common, 1); |
224 skiatest::Reporter* reporter = (skiatest::Reporter*)buffer.readFunctionPtr()
; | 231 skiatest::Reporter* reporter = (skiatest::Reporter*)buffer.readFunctionPtr()
; |
225 SkMatrix matrix; | 232 SkMatrix matrix; |
226 buffer.readMatrix(&matrix); | 233 buffer.readMatrix(&matrix); |
227 return sk_make_sp<MatrixTestImageFilter>(reporter, matrix); | 234 return MatrixTestImageFilter::Make(reporter, matrix); |
228 } | 235 } |
229 | 236 |
230 #ifndef SK_IGNORE_TO_STRING | 237 #ifndef SK_IGNORE_TO_STRING |
231 void MatrixTestImageFilter::toString(SkString* str) const { | 238 void MatrixTestImageFilter::toString(SkString* str) const { |
232 str->appendf("MatrixTestImageFilter: ("); | 239 str->appendf("MatrixTestImageFilter: ("); |
233 str->append(")"); | 240 str->append(")"); |
234 } | 241 } |
235 #endif | 242 #endif |
236 | 243 |
237 static sk_sp<SkImage> make_small_image() { | 244 static sk_sp<SkImage> make_small_image() { |
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
995 SkCanvas canvas(temp); | 1002 SkCanvas canvas(temp); |
996 canvas.scale(SkIntToScalar(2), SkIntToScalar(2)); | 1003 canvas.scale(SkIntToScalar(2), SkIntToScalar(2)); |
997 | 1004 |
998 SkMatrix expectedMatrix = canvas.getTotalMatrix(); | 1005 SkMatrix expectedMatrix = canvas.getTotalMatrix(); |
999 | 1006 |
1000 SkRTreeFactory factory; | 1007 SkRTreeFactory factory; |
1001 SkPictureRecorder recorder; | 1008 SkPictureRecorder recorder; |
1002 SkCanvas* recordingCanvas = recorder.beginRecording(100, 100, &factory, 0); | 1009 SkCanvas* recordingCanvas = recorder.beginRecording(100, 100, &factory, 0); |
1003 | 1010 |
1004 SkPaint paint; | 1011 SkPaint paint; |
1005 SkAutoTUnref<MatrixTestImageFilter> imageFilter( | 1012 paint.setImageFilter(MatrixTestImageFilter::Make(reporter, expectedMatrix)); |
1006 new MatrixTestImageFilter(reporter, expectedMatrix)); | |
1007 paint.setImageFilter(imageFilter.get()); | |
1008 recordingCanvas->saveLayer(nullptr, &paint); | 1013 recordingCanvas->saveLayer(nullptr, &paint); |
1009 SkPaint solidPaint; | 1014 SkPaint solidPaint; |
1010 solidPaint.setColor(0xFFFFFFFF); | 1015 solidPaint.setColor(0xFFFFFFFF); |
1011 recordingCanvas->save(); | 1016 recordingCanvas->save(); |
1012 recordingCanvas->scale(SkIntToScalar(10), SkIntToScalar(10)); | 1017 recordingCanvas->scale(SkIntToScalar(10), SkIntToScalar(10)); |
1013 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(100, 100)), solidPain
t); | 1018 recordingCanvas->drawRect(SkRect::Make(SkIRect::MakeWH(100, 100)), solidPain
t); |
1014 recordingCanvas->restore(); // scale | 1019 recordingCanvas->restore(); // scale |
1015 recordingCanvas->restore(); // saveLayer | 1020 recordingCanvas->restore(); // saveLayer |
1016 | 1021 |
1017 canvas.drawPicture(recorder.finishRecordingAsPicture()); | 1022 canvas.drawPicture(recorder.finishRecordingAsPicture()); |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1592 | 1597 |
1593 test_xfermode_cropped_input(&canvas, reporter); | 1598 test_xfermode_cropped_input(&canvas, reporter); |
1594 } | 1599 } |
1595 | 1600 |
1596 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { | 1601 DEF_GPUTEST_FOR_ALL_CONTEXTS(BlurLargeImage_Gpu, reporter, context) { |
1597 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, | 1602 auto surface(SkSurface::MakeRenderTarget(context, SkBudgeted::kYes, |
1598 SkImageInfo::MakeN32Premul(100, 100
))); | 1603 SkImageInfo::MakeN32Premul(100, 100
))); |
1599 test_large_blur_input(reporter, surface->getCanvas()); | 1604 test_large_blur_input(reporter, surface->getCanvas()); |
1600 } | 1605 } |
1601 #endif | 1606 #endif |
OLD | NEW |