OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright 2014 Google Inc. | 2 * Copyright 2014 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 "sk_tool_utils.h" | 8 #include "sk_tool_utils.h" |
9 #include "SkBitmapSource.h" | 9 #include "SkBitmapSource.h" |
10 #include "SkBlurImageFilter.h" | 10 #include "SkBlurImageFilter.h" |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
84 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode), | 84 SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode), |
85 SkDisplacementMapEffect::Create(SkDisplacementMapEffect::kR_ChannelS electorType, | 85 SkDisplacementMapEffect::Create(SkDisplacementMapEffect::kR_ChannelS electorType, |
86 SkDisplacementMapEffect::kR_ChannelS electorType, | 86 SkDisplacementMapEffect::kR_ChannelS electorType, |
87 SkIntToScalar(12), | 87 SkIntToScalar(12), |
88 gradient.get(), | 88 gradient.get(), |
89 checkerboard.get()), | 89 checkerboard.get()), |
90 SkDilateImageFilter::Create(2, 2, checkerboard.get()), | 90 SkDilateImageFilter::Create(2, 2, checkerboard.get()), |
91 SkErodeImageFilter::Create(2, 2, checkerboard.get()), | 91 SkErodeImageFilter::Create(2, 2, checkerboard.get()), |
92 SkOffsetImageFilter::Create(SkIntToScalar(-16), SkIntToScalar(32)), | 92 SkOffsetImageFilter::Create(SkIntToScalar(-16), SkIntToScalar(32)), |
93 SkImageFilter::CreateMatrixFilter(resizeMatrix, kNone_SkFilterQualit y), | 93 SkImageFilter::CreateMatrixFilter(resizeMatrix, kNone_SkFilterQualit y), |
94 SkRectShaderImageFilter::Create(noise), | |
95 }; | 94 }; |
96 | 95 |
97 SkRect r = SkRect::MakeWH(SkIntToScalar(64), SkIntToScalar(64)); | 96 SkRect r = SkRect::MakeWH(SkIntToScalar(64), SkIntToScalar(64)); |
98 SkScalar margin = SkIntToScalar(16); | 97 SkScalar margin = SkIntToScalar(16); |
99 SkRect bounds = r; | 98 SkRect bounds = r; |
100 bounds.outset(margin, margin); | 99 bounds.outset(margin, margin); |
101 | 100 |
101 canvas->save(); | |
102 for (int xOffset = 0; xOffset < 80; xOffset += 16) { | 102 for (int xOffset = 0; xOffset < 80; xOffset += 16) { |
103 canvas->save(); | 103 canvas->save(); |
104 bounds.fLeft = SkIntToScalar(xOffset); | 104 bounds.fLeft = SkIntToScalar(xOffset); |
105 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { | 105 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { |
106 SkPaint paint; | 106 SkPaint paint; |
107 paint.setColor(SK_ColorWHITE); | 107 paint.setColor(SK_ColorWHITE); |
108 paint.setImageFilter(filters[i]); | 108 paint.setImageFilter(filters[i]); |
109 paint.setAntiAlias(true); | 109 paint.setAntiAlias(true); |
110 canvas->save(); | 110 canvas->save(); |
111 canvas->clipRect(bounds); | 111 canvas->clipRect(bounds); |
112 if (5 == i) { | 112 if (5 == i) { |
113 canvas->translate(SkIntToScalar(16), SkIntToScalar(-32)); | 113 canvas->translate(SkIntToScalar(16), SkIntToScalar(-32)); |
114 } else if (6 == i) { | 114 } else if (6 == i) { |
115 canvas->scale(SkScalarInvert(RESIZE_FACTOR_X), | 115 canvas->scale(SkScalarInvert(RESIZE_FACTOR_X), |
116 SkScalarInvert(RESIZE_FACTOR_Y)); | 116 SkScalarInvert(RESIZE_FACTOR_Y)); |
117 } | 117 } |
118 canvas->drawCircle(r.centerX(), r.centerY(), r.width() * 2 / 5, paint); | 118 canvas->drawCircle(r.centerX(), r.centerY(), r.width() * 2 / 5, paint); |
119 canvas->restore(); | 119 canvas->restore(); |
120 canvas->translate(r.width() + margin, 0); | 120 canvas->translate(r.width() + margin, 0); |
121 } | 121 } |
122 canvas->restore(); | 122 canvas->restore(); |
123 canvas->translate(0, r.height() + margin); | 123 canvas->translate(0, r.height() + margin); |
124 } | 124 } |
125 canvas->restore(); | |
125 | 126 |
126 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { | 127 for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { |
127 SkSafeUnref(filters[i]); | 128 SkSafeUnref(filters[i]); |
128 } | 129 } |
130 | |
robertphillips
2015/07/21 14:38:41
leak?
Mv 'noise' down here too?
jvanverth1
2015/07/21 15:30:45
Done.
| |
131 SkImageFilter* rectFilter = SkRectShaderImageFilter::Create(noise); | |
132 canvas->translate(SK_ARRAY_COUNT(filters)*(r.width() + margin), 0); | |
133 for (int xOffset = 0; xOffset < 80; xOffset += 16) { | |
robertphillips
2015/07/21 14:38:42
Would it be clearer if this were a subroutine:
dr
jvanverth1
2015/07/21 15:30:45
Done.
| |
134 canvas->save(); | |
135 bounds.fLeft = SkIntToScalar(xOffset); | |
136 SkPaint paint; | |
137 paint.setColor(SK_ColorWHITE); | |
138 paint.setImageFilter(rectFilter); | |
139 paint.setAntiAlias(true); | |
140 canvas->clipRect(bounds); | |
141 canvas->drawCircle(r.centerX(), r.centerY(), r.width() * 2 / 5, pain t); | |
142 canvas->restore(); | |
143 canvas->translate(0, r.height() + margin); | |
144 } | |
129 } | 145 } |
130 | 146 |
131 private: | 147 private: |
132 bool fInitialized; | 148 bool fInitialized; |
133 SkBitmap fCheckerboard; | 149 SkBitmap fCheckerboard; |
134 SkBitmap fGradientCircle; | 150 SkBitmap fGradientCircle; |
135 typedef GM INHERITED; | 151 typedef GM INHERITED; |
136 }; | 152 }; |
137 | 153 |
138 ////////////////////////////////////////////////////////////////////////////// | 154 ////////////////////////////////////////////////////////////////////////////// |
139 | 155 |
140 static GM* MyFactory(void*) { return new ImageFiltersClippedGM; } | 156 static GM* MyFactory(void*) { return new ImageFiltersClippedGM; } |
141 static GMRegistry reg(MyFactory); | 157 static GMRegistry reg(MyFactory); |
142 | 158 |
143 } | 159 } |
OLD | NEW |