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 "gm.h" | 8 #include "gm.h" |
9 #include "SkBlurMask.h" | 9 #include "SkBlurMask.h" |
10 #include "SkBlurMaskFilter.h" | 10 #include "SkBlurMaskFilter.h" |
11 #include "SkCanvas.h" | 11 #include "SkCanvas.h" |
| 12 #include "SkImage.h" |
12 | 13 |
13 #if SK_SUPPORT_GPU | 14 #if SK_SUPPORT_GPU |
14 #include "GrContext.h" | 15 #include "GrContext.h" |
15 #include "GrContextOptions.h" | 16 #include "GrContextOptions.h" |
16 #endif | 17 #endif |
17 | 18 |
| 19 static void draw_bitmap_rect(SkCanvas* canvas, const SkBitmap& bitmap, const SkI
mage*, |
| 20 const SkRect* src, const SkRect& dst, |
| 21 const SkPaint* paint, SkCanvas::SrcRectConstraint c
onstraint) { |
| 22 canvas->drawBitmapRect(bitmap, src, dst, paint, constraint); |
| 23 } |
| 24 |
| 25 static void draw_image_rect(SkCanvas* canvas, const SkBitmap&, const SkImage* im
age, |
| 26 const SkRect* src, const SkRect& dst, |
| 27 const SkPaint* paint, SkCanvas::SrcRectConstraint co
nstraint) { |
| 28 canvas->drawImageRect(image, src, dst, paint, constraint); |
| 29 } |
| 30 |
| 31 enum BleedTest { |
| 32 kUseBitmap_BleedTest, |
| 33 kUseImage_BleedTest, |
| 34 }; |
| 35 |
| 36 const struct { |
| 37 const char* fName; |
| 38 void (*fDraw)(SkCanvas*, const SkBitmap&, const SkImage*, const SkRect*, con
st SkRect&, |
| 39 const SkPaint*, SkCanvas::SrcRectConstraint); |
| 40 } gBleedRec[] = { |
| 41 { "bleed", draw_bitmap_rect }, |
| 42 { "bleed_image", draw_image_rect }, |
| 43 }; |
| 44 |
18 // Create a black&white checked texture with 2 1-pixel rings | 45 // Create a black&white checked texture with 2 1-pixel rings |
19 // around the outside edge. The inner ring is red and the outer ring is blue. | 46 // around the outside edge. The inner ring is red and the outer ring is blue. |
20 static void make_ringed_bitmap(SkBitmap* result, int width, int height) { | 47 static void make_ringed_bitmap(SkBitmap* result, int width, int height) { |
21 SkASSERT(0 == width % 2 && 0 == height % 2); | 48 SkASSERT(0 == width % 2 && 0 == height % 2); |
22 | 49 |
23 static const SkPMColor kRed = SkPreMultiplyColor(SK_ColorRED); | 50 static const SkPMColor kRed = SkPreMultiplyColor(SK_ColorRED); |
24 static const SkPMColor kBlue = SkPreMultiplyColor(SK_ColorBLUE); | 51 static const SkPMColor kBlue = SkPreMultiplyColor(SK_ColorBLUE); |
25 static const SkPMColor kBlack = SkPreMultiplyColor(SK_ColorBLACK); | 52 static const SkPMColor kBlack = SkPreMultiplyColor(SK_ColorBLACK); |
26 static const SkPMColor kWhite = SkPreMultiplyColor(SK_ColorWHITE); | 53 static const SkPMColor kWhite = SkPreMultiplyColor(SK_ColorWHITE); |
27 | 54 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 } | 100 } |
74 scanline[width-1] = kBlue; | 101 scanline[width-1] = kBlue; |
75 | 102 |
76 scanline = result->getAddr32(0, height-1); | 103 scanline = result->getAddr32(0, height-1); |
77 for (int x = 0; x < width; ++x) { | 104 for (int x = 0; x < width; ++x) { |
78 scanline[x] = kBlue; | 105 scanline[x] = kBlue; |
79 } | 106 } |
80 result->setImmutable(); | 107 result->setImmutable(); |
81 } | 108 } |
82 | 109 |
83 // This GM exercises the drawBitmapRectToRect "bleed" flag | 110 // This GM exercises the drawBitmapRect constraints |
84 class BleedGM : public skiagm::GM { | 111 class BleedGM : public skiagm::GM { |
85 public: | 112 public: |
86 BleedGM() {} | 113 BleedGM(BleedTest bt) : fBT(bt) {} |
87 | 114 |
88 protected: | 115 protected: |
89 | 116 |
90 SkString onShortName() override { | 117 SkString onShortName() override { |
91 return SkString("bleed"); | 118 return SkString(gBleedRec[fBT].fName); |
92 } | 119 } |
93 | 120 |
94 SkISize onISize() override { | 121 SkISize onISize() override { |
95 return SkISize::Make(kWidth, 780); | 122 return SkISize::Make(kWidth, 780); |
96 } | 123 } |
97 | 124 |
98 void onOnceBeforeDraw() override { | 125 void onOnceBeforeDraw() override { |
99 make_ringed_bitmap(&fBitmapSmall, kSmallTextureSize, kSmallTextureSize); | 126 make_ringed_bitmap(&fBitmapSmall, kSmallTextureSize, kSmallTextureSize); |
| 127 fImageSmall.reset(SkImage::NewFromBitmap(fBitmapSmall)); |
100 | 128 |
101 // To exercise the GPU's tiling path we need a texture | 129 // To exercise the GPU's tiling path we need a texture |
102 // too big for the GPU to handle in one go | 130 // too big for the GPU to handle in one go |
103 make_ringed_bitmap(&fBitmapBig, 2*kMaxTextureSize, 2*kMaxTextureSize); | 131 make_ringed_bitmap(&fBitmapBig, 2*kMaxTextureSize, 2*kMaxTextureSize); |
| 132 fImageBig.reset(SkImage::NewFromBitmap(fBitmapBig)); |
104 } | 133 } |
105 | 134 |
106 // Draw only the center of the small bitmap | 135 // Draw only the center of the small bitmap |
107 void drawCase1(SkCanvas* canvas, int transX, int transY, | 136 void drawCase1(SkCanvas* canvas, int transX, int transY, |
108 SkCanvas::DrawBitmapRectFlags flags, SkFilterQuality filter)
{ | 137 SkCanvas::SrcRectConstraint constraint, SkFilterQuality filte
r) { |
109 SkRect src = SkRect::MakeXYWH(2, 2, | 138 SkRect src = SkRect::MakeXYWH(2, 2, |
110 SkIntToScalar(kSmallTextureSize-4), | 139 SkIntToScalar(kSmallTextureSize-4), |
111 SkIntToScalar(kSmallTextureSize-4)); | 140 SkIntToScalar(kSmallTextureSize-4)); |
112 SkRect dst = SkRect::MakeXYWH(0, 0, SkIntToScalar(kBlockSize), SkIntToSc
alar(kBlockSize)); | 141 SkRect dst = SkRect::MakeXYWH(SkIntToScalar(transX), SkIntToScalar(trans
Y), |
| 142 SkIntToScalar(kBlockSize), SkIntToScalar(k
BlockSize)); |
113 | 143 |
114 SkPaint paint; | 144 SkPaint paint; |
115 paint.setFilterQuality(filter); | 145 paint.setFilterQuality(filter); |
116 | 146 |
117 canvas->save(); | 147 gBleedRec[fBT].fDraw(canvas, fBitmapSmall, fImageSmall, &src, dst, &pain
t, constraint); |
118 canvas->translate(SkIntToScalar(transX), SkIntToScalar(transY)); | |
119 canvas->drawBitmapRectToRect(fBitmapSmall, &src, dst, &paint, flags); | |
120 canvas->restore(); | |
121 } | 148 } |
122 | 149 |
123 // Draw almost all of the large bitmap | 150 // Draw almost all of the large bitmap |
124 void drawCase2(SkCanvas* canvas, int transX, int transY, | 151 void drawCase2(SkCanvas* canvas, int transX, int transY, |
125 SkCanvas::DrawBitmapRectFlags flags, SkFilterQuality filter)
{ | 152 SkCanvas::SrcRectConstraint constraint, SkFilterQuality filte
r) { |
126 SkRect src = SkRect::MakeXYWH(2, 2, | 153 SkRect src = SkRect::MakeXYWH(2, 2, |
127 SkIntToScalar(fBitmapBig.width()-4), | 154 SkIntToScalar(fBitmapBig.width()-4), |
128 SkIntToScalar(fBitmapBig.height()-4)); | 155 SkIntToScalar(fBitmapBig.height()-4)); |
129 SkRect dst = SkRect::MakeXYWH(0, 0, SkIntToScalar(kBlockSize), SkIntToSc
alar(kBlockSize)); | 156 SkRect dst = SkRect::MakeXYWH(SkIntToScalar(transX), SkIntToScalar(trans
Y), |
| 157 SkIntToScalar(kBlockSize), SkIntToScalar(k
BlockSize)); |
130 | 158 |
131 SkPaint paint; | 159 SkPaint paint; |
132 paint.setFilterQuality(filter); | 160 paint.setFilterQuality(filter); |
133 | 161 |
134 canvas->save(); | 162 gBleedRec[fBT].fDraw(canvas, fBitmapBig, fImageBig, &src, dst, &paint, c
onstraint); |
135 canvas->translate(SkIntToScalar(transX), SkIntToScalar(transY)); | |
136 canvas->drawBitmapRectToRect(fBitmapBig, &src, dst, &paint, flags); | |
137 canvas->restore(); | |
138 } | 163 } |
139 | 164 |
140 // Draw ~1/4 of the large bitmap | 165 // Draw ~1/4 of the large bitmap |
141 void drawCase3(SkCanvas* canvas, int transX, int transY, | 166 void drawCase3(SkCanvas* canvas, int transX, int transY, |
142 SkCanvas::DrawBitmapRectFlags flags, SkFilterQuality filter)
{ | 167 SkCanvas::SrcRectConstraint constraint, SkFilterQuality filte
r) { |
143 SkRect src = SkRect::MakeXYWH(2, 2, | 168 SkRect src = SkRect::MakeXYWH(2, 2, |
144 SkIntToScalar(fBitmapBig.width()/2-2), | 169 SkIntToScalar(fBitmapBig.width()/2-2), |
145 SkIntToScalar(fBitmapBig.height()/2-2)); | 170 SkIntToScalar(fBitmapBig.height()/2-2)); |
146 SkRect dst = SkRect::MakeXYWH(0, 0, SkIntToScalar(kBlockSize), SkIntToSc
alar(kBlockSize)); | 171 SkRect dst = SkRect::MakeXYWH(SkIntToScalar(transX), SkIntToScalar(trans
Y), |
| 172 SkIntToScalar(kBlockSize), SkIntToScalar(k
BlockSize)); |
147 | 173 |
148 SkPaint paint; | 174 SkPaint paint; |
149 paint.setFilterQuality(filter); | 175 paint.setFilterQuality(filter); |
150 | 176 |
151 canvas->save(); | 177 gBleedRec[fBT].fDraw(canvas, fBitmapBig, fImageBig, &src, dst, &paint, c
onstraint); |
152 canvas->translate(SkIntToScalar(transX), SkIntToScalar(transY)); | |
153 canvas->drawBitmapRectToRect(fBitmapBig, &src, dst, &paint, flags); | |
154 canvas->restore(); | |
155 } | 178 } |
156 | 179 |
157 // Draw the center of the small bitmap with a mask filter | 180 // Draw the center of the small bitmap with a mask filter |
158 void drawCase4(SkCanvas* canvas, int transX, int transY, | 181 void drawCase4(SkCanvas* canvas, int transX, int transY, |
159 SkCanvas::DrawBitmapRectFlags flags, SkFilterQuality filter)
{ | 182 SkCanvas::SrcRectConstraint constraint, SkFilterQuality filte
r) { |
160 SkRect src = SkRect::MakeXYWH(2, 2, | 183 SkRect src = SkRect::MakeXYWH(2, 2, |
161 SkIntToScalar(kSmallTextureSize-4), | 184 SkIntToScalar(kSmallTextureSize-4), |
162 SkIntToScalar(kSmallTextureSize-4)); | 185 SkIntToScalar(kSmallTextureSize-4)); |
163 SkRect dst = SkRect::MakeXYWH(0, 0, SkIntToScalar(kBlockSize), SkIntToSc
alar(kBlockSize)); | 186 SkRect dst = SkRect::MakeXYWH(SkIntToScalar(transX), SkIntToScalar(trans
Y), |
| 187 SkIntToScalar(kBlockSize), SkIntToScalar(k
BlockSize)); |
164 | 188 |
165 SkPaint paint; | 189 SkPaint paint; |
166 paint.setFilterQuality(filter); | 190 paint.setFilterQuality(filter); |
167 SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, | 191 SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, |
168 SkBlurMask::ConvertRadiusToSigma(SkIntT
oScalar(3))); | 192 SkBlurMask::ConvertRadiusToSigma(3)); |
169 paint.setMaskFilter(mf)->unref(); | 193 paint.setMaskFilter(mf)->unref(); |
170 | 194 |
171 canvas->save(); | 195 gBleedRec[fBT].fDraw(canvas, fBitmapSmall, fImageSmall, &src, dst, &pain
t, constraint); |
172 canvas->translate(SkIntToScalar(transX), SkIntToScalar(transY)); | |
173 canvas->drawBitmapRectToRect(fBitmapSmall, &src, dst, &paint, flags); | |
174 canvas->restore(); | |
175 } | 196 } |
176 | 197 |
177 void onDraw(SkCanvas* canvas) override { | 198 void onDraw(SkCanvas* canvas) override { |
178 | 199 |
179 canvas->clear(SK_ColorGRAY); | 200 canvas->clear(SK_ColorGRAY); |
180 | 201 |
181 for (int m = 0; m < 2; ++m) { | 202 for (int m = 0; m < 2; ++m) { |
182 canvas->save(); | 203 canvas->save(); |
183 if (m) { | 204 if (m) { |
184 static const SkScalar kBottom = SkIntToScalar(kRow3Y + kBlockSiz
e + kBlockSpacing); | 205 static const SkScalar kBottom = SkIntToScalar(kRow3Y + kBlockSiz
e + kBlockSpacing); |
185 canvas->translate(0, kBottom); | 206 canvas->translate(0, kBottom); |
186 SkMatrix rotate; | 207 SkMatrix rotate; |
187 rotate.setRotate(15.f, 0, kBottom + kBlockSpacing); | 208 rotate.setRotate(15.f, 0, kBottom + kBlockSpacing); |
188 canvas->concat(rotate); | 209 canvas->concat(rotate); |
189 canvas->scale(0.71f, 1.22f); | 210 canvas->scale(0.71f, 1.22f); |
190 } | 211 } |
191 | 212 |
192 // First draw a column with no bleeding and no filtering | 213 // First draw a column with no bleeding and no filtering |
193 this->drawCase1(canvas, kCol0X, kRow0Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kNone_SkFilterQuality); | 214 this->drawCase1(canvas, kCol0X, kRow0Y, SkCanvas::kStrict_SrcRectCon
straint, kNone_SkFilterQuality); |
194 this->drawCase2(canvas, kCol0X, kRow1Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kNone_SkFilterQuality); | 215 this->drawCase2(canvas, kCol0X, kRow1Y, SkCanvas::kStrict_SrcRectCon
straint, kNone_SkFilterQuality); |
195 this->drawCase3(canvas, kCol0X, kRow2Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kNone_SkFilterQuality); | 216 this->drawCase3(canvas, kCol0X, kRow2Y, SkCanvas::kStrict_SrcRectCon
straint, kNone_SkFilterQuality); |
196 this->drawCase4(canvas, kCol0X, kRow3Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kNone_SkFilterQuality); | 217 this->drawCase4(canvas, kCol0X, kRow3Y, SkCanvas::kStrict_SrcRectCon
straint, kNone_SkFilterQuality); |
197 | 218 |
198 // Then draw a column with no bleeding and low filtering | 219 // Then draw a column with no bleeding and low filtering |
199 this->drawCase1(canvas, kCol1X, kRow0Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kLow_SkFilterQuality); | 220 this->drawCase1(canvas, kCol1X, kRow0Y, SkCanvas::kStrict_SrcRectCon
straint, kLow_SkFilterQuality); |
200 this->drawCase2(canvas, kCol1X, kRow1Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kLow_SkFilterQuality); | 221 this->drawCase2(canvas, kCol1X, kRow1Y, SkCanvas::kStrict_SrcRectCon
straint, kLow_SkFilterQuality); |
201 this->drawCase3(canvas, kCol1X, kRow2Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kLow_SkFilterQuality); | 222 this->drawCase3(canvas, kCol1X, kRow2Y, SkCanvas::kStrict_SrcRectCon
straint, kLow_SkFilterQuality); |
202 this->drawCase4(canvas, kCol1X, kRow3Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kLow_SkFilterQuality); | 223 this->drawCase4(canvas, kCol1X, kRow3Y, SkCanvas::kStrict_SrcRectCon
straint, kLow_SkFilterQuality); |
203 | 224 |
204 // Then draw a column with no bleeding and high filtering | 225 // Then draw a column with no bleeding and high filtering |
205 this->drawCase1(canvas, kCol2X, kRow0Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kHigh_SkFilterQuality); | 226 this->drawCase1(canvas, kCol2X, kRow0Y, SkCanvas::kStrict_SrcRectCon
straint, kHigh_SkFilterQuality); |
206 this->drawCase2(canvas, kCol2X, kRow1Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kHigh_SkFilterQuality); | 227 this->drawCase2(canvas, kCol2X, kRow1Y, SkCanvas::kStrict_SrcRectCon
straint, kHigh_SkFilterQuality); |
207 this->drawCase3(canvas, kCol2X, kRow2Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kHigh_SkFilterQuality); | 228 this->drawCase3(canvas, kCol2X, kRow2Y, SkCanvas::kStrict_SrcRectCon
straint, kHigh_SkFilterQuality); |
208 this->drawCase4(canvas, kCol2X, kRow3Y, SkCanvas::kNone_DrawBitmapRe
ctFlag, kHigh_SkFilterQuality); | 229 this->drawCase4(canvas, kCol2X, kRow3Y, SkCanvas::kStrict_SrcRectCon
straint, kHigh_SkFilterQuality); |
209 | 230 |
210 // Then draw a column with bleeding and no filtering (bleed should h
ave no effect w/out blur) | 231 // Then draw a column with bleeding and no filtering (bleed should h
ave no effect w/out blur) |
211 this->drawCase1(canvas, kCol3X, kRow0Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kNone_SkFilterQuality); | 232 this->drawCase1(canvas, kCol3X, kRow0Y, SkCanvas::kFast_SrcRectConst
raint, kNone_SkFilterQuality); |
212 this->drawCase2(canvas, kCol3X, kRow1Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kNone_SkFilterQuality); | 233 this->drawCase2(canvas, kCol3X, kRow1Y, SkCanvas::kFast_SrcRectConst
raint, kNone_SkFilterQuality); |
213 this->drawCase3(canvas, kCol3X, kRow2Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kNone_SkFilterQuality); | 234 this->drawCase3(canvas, kCol3X, kRow2Y, SkCanvas::kFast_SrcRectConst
raint, kNone_SkFilterQuality); |
214 this->drawCase4(canvas, kCol3X, kRow3Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kNone_SkFilterQuality); | 235 this->drawCase4(canvas, kCol3X, kRow3Y, SkCanvas::kFast_SrcRectConst
raint, kNone_SkFilterQuality); |
215 | 236 |
216 // Then draw a column with bleeding and low filtering | 237 // Then draw a column with bleeding and low filtering |
217 this->drawCase1(canvas, kCol4X, kRow0Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kLow_SkFilterQuality); | 238 this->drawCase1(canvas, kCol4X, kRow0Y, SkCanvas::kFast_SrcRectConst
raint, kLow_SkFilterQuality); |
218 this->drawCase2(canvas, kCol4X, kRow1Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kLow_SkFilterQuality); | 239 this->drawCase2(canvas, kCol4X, kRow1Y, SkCanvas::kFast_SrcRectConst
raint, kLow_SkFilterQuality); |
219 this->drawCase3(canvas, kCol4X, kRow2Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kLow_SkFilterQuality); | 240 this->drawCase3(canvas, kCol4X, kRow2Y, SkCanvas::kFast_SrcRectConst
raint, kLow_SkFilterQuality); |
220 this->drawCase4(canvas, kCol4X, kRow3Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kLow_SkFilterQuality); | 241 this->drawCase4(canvas, kCol4X, kRow3Y, SkCanvas::kFast_SrcRectConst
raint, kLow_SkFilterQuality); |
221 | 242 |
222 // Finally draw a column with bleeding and high filtering | 243 // Finally draw a column with bleeding and high filtering |
223 this->drawCase1(canvas, kCol5X, kRow0Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kHigh_SkFilterQuality); | 244 this->drawCase1(canvas, kCol5X, kRow0Y, SkCanvas::kFast_SrcRectConst
raint, kHigh_SkFilterQuality); |
224 this->drawCase2(canvas, kCol5X, kRow1Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kHigh_SkFilterQuality); | 245 this->drawCase2(canvas, kCol5X, kRow1Y, SkCanvas::kFast_SrcRectConst
raint, kHigh_SkFilterQuality); |
225 this->drawCase3(canvas, kCol5X, kRow2Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kHigh_SkFilterQuality); | 246 this->drawCase3(canvas, kCol5X, kRow2Y, SkCanvas::kFast_SrcRectConst
raint, kHigh_SkFilterQuality); |
226 this->drawCase4(canvas, kCol5X, kRow3Y, SkCanvas::kBleed_DrawBitmapR
ectFlag, kHigh_SkFilterQuality); | 247 this->drawCase4(canvas, kCol5X, kRow3Y, SkCanvas::kFast_SrcRectConst
raint, kHigh_SkFilterQuality); |
227 | 248 |
228 canvas->restore(); | 249 canvas->restore(); |
229 } | 250 } |
230 } | 251 } |
231 | 252 |
232 #if SK_SUPPORT_GPU | 253 #if SK_SUPPORT_GPU |
233 void modifyGrContextOptions(GrContextOptions* options) override { | 254 void modifyGrContextOptions(GrContextOptions* options) override { |
234 options->fMaxTextureSizeOverride = kMaxTextureSize; | 255 options->fMaxTextureSizeOverride = kMaxTextureSize; |
235 } | 256 } |
236 #endif | 257 #endif |
(...skipping 13 matching lines...) Expand all Loading... |
250 static const int kRow0Y = kBlockSpacing; | 271 static const int kRow0Y = kBlockSpacing; |
251 static const int kRow1Y = 2*kBlockSpacing + kBlockSize; | 272 static const int kRow1Y = 2*kBlockSpacing + kBlockSize; |
252 static const int kRow2Y = 3*kBlockSpacing + 2*kBlockSize; | 273 static const int kRow2Y = 3*kBlockSpacing + 2*kBlockSize; |
253 static const int kRow3Y = 4*kBlockSpacing + 3*kBlockSize; | 274 static const int kRow3Y = 4*kBlockSpacing + 3*kBlockSize; |
254 | 275 |
255 static const int kSmallTextureSize = 6; | 276 static const int kSmallTextureSize = 6; |
256 static const int kMaxTextureSize = 32; | 277 static const int kMaxTextureSize = 32; |
257 | 278 |
258 SkBitmap fBitmapSmall; | 279 SkBitmap fBitmapSmall; |
259 SkBitmap fBitmapBig; | 280 SkBitmap fBitmapBig; |
| 281 SkAutoTUnref<SkImage> fImageSmall; |
| 282 SkAutoTUnref<SkImage> fImageBig; |
| 283 const BleedTest fBT; |
260 | 284 |
261 typedef GM INHERITED; | 285 typedef GM INHERITED; |
262 }; | 286 }; |
263 | 287 |
264 DEF_GM( return new BleedGM(); ) | 288 DEF_GM( return new BleedGM(kUseBitmap_BleedTest); ) |
| 289 DEF_GM( return new BleedGM(kUseImage_BleedTest); ) |
OLD | NEW |