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 |