| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2011 Google Inc. | 2 * Copyright 2011 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 "gm.h" | 8 #include "gm.h" |
| 9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
| 10 #include "SkColorFilter.h" | 10 #include "SkColorFilter.h" |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 99 } | 99 } |
| 100 } | 100 } |
| 101 | 101 |
| 102 void draw_frame(SkCanvas* canvas, const SkRect& r) { | 102 void draw_frame(SkCanvas* canvas, const SkRect& r) { |
| 103 SkPaint paint; | 103 SkPaint paint; |
| 104 paint.setStyle(SkPaint::kStroke_Style); | 104 paint.setStyle(SkPaint::kStroke_Style); |
| 105 paint.setColor(SK_ColorRED); | 105 paint.setColor(SK_ColorRED); |
| 106 canvas->drawRect(r, paint); | 106 canvas->drawRect(r, paint); |
| 107 } | 107 } |
| 108 | 108 |
| 109 virtual void onOnceBeforeDraw() override{ | 109 void onOnceBeforeDraw() override{ |
| 110 make_checkerboard(); | 110 make_checkerboard(); |
| 111 } | 111 } |
| 112 | 112 |
| 113 virtual void onDraw(SkCanvas* canvas) override { | 113 void onDraw(SkCanvas* canvas) override { |
| 114 void (*drawProc[])(SkCanvas*, const SkRect&, sk_sp<SkImageFilter>) = { | 114 void (*drawProc[])(SkCanvas*, const SkRect&, sk_sp<SkImageFilter>) = { |
| 115 draw_bitmap, draw_path, draw_paint, draw_text | 115 draw_bitmap, draw_path, draw_paint, draw_text |
| 116 }; | 116 }; |
| 117 | 117 |
| 118 sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorBLUE, | 118 sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorBLUE, |
| 119 SkXfermode::kSrcIn
_Mode)); | 119 SkXfermode::kSrcIn
_Mode)); |
| 120 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(10, 10,
44, 44)), | 120 SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(10, 10,
44, 44)), |
| 121 SkImageFilter::CropRect::kHasAll_CropEd
ge); | 121 SkImageFilter::CropRect::kHasAll_CropEd
ge); |
| 122 SkImageFilter::CropRect bogusRect(SkRect::Make(SkIRect::MakeXYWH(-100, -
100, 10, 10)), | 122 SkImageFilter::CropRect bogusRect(SkRect::Make(SkIRect::MakeXYWH(-100, -
100, 10, 10)), |
| 123 SkImageFilter::CropRect::kHasAll_CropE
dge); | 123 SkImageFilter::CropRect::kHasAll_CropE
dge); |
| 124 | 124 |
| 125 sk_sp<SkImageFilter> offset(SkOffsetImageFilter::Make(SkIntToScalar(-10)
, | 125 sk_sp<SkImageFilter> offset(SkOffsetImageFilter::Make(SkIntToScalar(-10)
, |
| 126 SkIntToScalar(-10)
, | 126 SkIntToScalar(-10)
, |
| 127 nullptr)); | 127 nullptr)); |
| 128 | 128 |
| 129 sk_sp<SkImageFilter> cfOffset(SkColorFilterImageFilter::Create(cf.get(),
offset.get())); | 129 sk_sp<SkImageFilter> cfOffset(SkColorFilterImageFilter::Make(cf, std::mo
ve(offset))); |
| 130 | 130 |
| 131 sk_sp<SkImageFilter> erodeX(SkErodeImageFilter::Make(8, 0, nullptr, &cro
pRect)); | 131 sk_sp<SkImageFilter> erodeX(SkErodeImageFilter::Make(8, 0, nullptr, &cro
pRect)); |
| 132 sk_sp<SkImageFilter> erodeY(SkErodeImageFilter::Make(0, 8, nullptr, &cro
pRect)); | 132 sk_sp<SkImageFilter> erodeY(SkErodeImageFilter::Make(0, 8, nullptr, &cro
pRect)); |
| 133 | 133 |
| 134 sk_sp<SkImageFilter> filters[] = { | 134 sk_sp<SkImageFilter> filters[] = { |
| 135 nullptr, | 135 nullptr, |
| 136 sk_sp<SkImageFilter>(SkColorFilterImageFilter::Create(cf.get(), null
ptr, &cropRect)), | 136 SkColorFilterImageFilter::Make(cf, nullptr, &cropRect), |
| 137 SkBlurImageFilter::Make(0.0f, 0.0f, nullptr, &cropRect), | 137 SkBlurImageFilter::Make(0.0f, 0.0f, nullptr, &cropRect), |
| 138 SkBlurImageFilter::Make(1.0f, 1.0f, nullptr, &cropRect), | 138 SkBlurImageFilter::Make(1.0f, 1.0f, nullptr, &cropRect), |
| 139 SkBlurImageFilter::Make(8.0f, 0.0f, nullptr, &cropRect), | 139 SkBlurImageFilter::Make(8.0f, 0.0f, nullptr, &cropRect), |
| 140 SkBlurImageFilter::Make(0.0f, 8.0f, nullptr, &cropRect), | 140 SkBlurImageFilter::Make(0.0f, 8.0f, nullptr, &cropRect), |
| 141 SkBlurImageFilter::Make(8.0f, 8.0f, nullptr, &cropRect), | 141 SkBlurImageFilter::Make(8.0f, 8.0f, nullptr, &cropRect), |
| 142 SkErodeImageFilter::Make(1, 1, nullptr, &cropRect), | 142 SkErodeImageFilter::Make(1, 1, nullptr, &cropRect), |
| 143 SkErodeImageFilter::Make(8, 0, std::move(erodeY), &cropRect), | 143 SkErodeImageFilter::Make(8, 0, std::move(erodeY), &cropRect), |
| 144 SkErodeImageFilter::Make(0, 8, std::move(erodeX), &cropRect), | 144 SkErodeImageFilter::Make(0, 8, std::move(erodeX), &cropRect), |
| 145 SkErodeImageFilter::Make(8, 8, nullptr, &cropRect), | 145 SkErodeImageFilter::Make(8, 8, nullptr, &cropRect), |
| 146 SkMergeImageFilter::Make(nullptr, | 146 SkMergeImageFilter::Make(nullptr, |
| 147 std::move(cfOffset), | 147 std::move(cfOffset), |
| 148 SkXfermode::kSrcOver_Mode, | 148 SkXfermode::kSrcOver_Mode, |
| 149 &cropRect), | 149 &cropRect), |
| 150 SkBlurImageFilter::Make(8.0f, 8.0f, nullptr, &bogusRect), | 150 SkBlurImageFilter::Make(8.0f, 8.0f, nullptr, &bogusRect), |
| 151 sk_sp<SkImageFilter>(SkColorFilterImageFilter::Create(cf.get(), null
ptr, &bogusRect)), | 151 SkColorFilterImageFilter::Make(cf, nullptr, &bogusRect), |
| 152 }; | 152 }; |
| 153 | 153 |
| 154 SkRect r = SkRect::MakeWH(SkIntToScalar(64), SkIntToScalar(64)); | 154 SkRect r = SkRect::MakeWH(SkIntToScalar(64), SkIntToScalar(64)); |
| 155 SkScalar MARGIN = SkIntToScalar(16); | 155 SkScalar MARGIN = SkIntToScalar(16); |
| 156 SkScalar DX = r.width() + MARGIN; | 156 SkScalar DX = r.width() + MARGIN; |
| 157 SkScalar DY = r.height() + MARGIN; | 157 SkScalar DY = r.height() + MARGIN; |
| 158 | 158 |
| 159 canvas->translate(MARGIN, MARGIN); | 159 canvas->translate(MARGIN, MARGIN); |
| 160 for (size_t j = 0; j < SK_ARRAY_COUNT(drawProc); ++j) { | 160 for (size_t j = 0; j < SK_ARRAY_COUNT(drawProc); ++j) { |
| 161 canvas->save(); | 161 canvas->save(); |
| 162 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { | 162 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { |
| 163 SkPaint paint; | 163 SkPaint paint; |
| 164 canvas->drawBitmap(fCheckerboard, 0, 0); | 164 canvas->drawBitmap(fCheckerboard, 0, 0); |
| 165 drawProc[j](canvas, r, filters[i]); | 165 drawProc[j](canvas, r, filters[i]); |
| 166 canvas->translate(0, DY); | 166 canvas->translate(0, DY); |
| 167 } | 167 } |
| 168 canvas->restore(); | 168 canvas->restore(); |
| 169 canvas->translate(DX, 0); | 169 canvas->translate(DX, 0); |
| 170 } | 170 } |
| 171 } | 171 } |
| 172 | 172 |
| 173 private: | 173 private: |
| 174 SkBitmap fCheckerboard; | 174 SkBitmap fCheckerboard; |
| 175 typedef GM INHERITED; | 175 typedef GM INHERITED; |
| 176 }; | 176 }; |
| 177 | 177 |
| 178 /////////////////////////////////////////////////////////////////////////////// | 178 /////////////////////////////////////////////////////////////////////////////// |
| 179 | 179 |
| 180 DEF_GM( return new ImageFiltersCroppedGM; ) | 180 DEF_GM( return new ImageFiltersCroppedGM; ) |
| OLD | NEW |