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 "SkBitmapDevice.h" | 8 #include "SkBitmapDevice.h" |
9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 r = SkMulDiv255Ceiling(r, a); | 100 r = SkMulDiv255Ceiling(r, a); |
101 g = SkMulDiv255Ceiling(g, a); | 101 g = SkMulDiv255Ceiling(g, a); |
102 b = SkMulDiv255Ceiling(b, a); | 102 b = SkMulDiv255Ceiling(b, a); |
103 } | 103 } |
104 return SkPackARGB32(a, r, g, b); | 104 return SkPackARGB32(a, r, g, b); |
105 } | 105 } |
106 | 106 |
107 static void fillCanvas(SkCanvas* canvas) { | 107 static void fillCanvas(SkCanvas* canvas) { |
108 static SkBitmap bmp; | 108 static SkBitmap bmp; |
109 if (bmp.isNull()) { | 109 if (bmp.isNull()) { |
110 bmp.setConfig(SkBitmap::kARGB_8888_Config, DEV_W, DEV_H); | 110 SkDEBUGCODE(bool alloc =) bmp.allocN32Pixels(DEV_W, DEV_H); |
111 SkDEBUGCODE(bool alloc =) bmp.allocPixels(); | |
112 SkASSERT(alloc); | 111 SkASSERT(alloc); |
113 SkAutoLockPixels alp(bmp); | 112 SkAutoLockPixels alp(bmp); |
114 intptr_t pixels = reinterpret_cast<intptr_t>(bmp.getPixels()); | 113 intptr_t pixels = reinterpret_cast<intptr_t>(bmp.getPixels()); |
115 for (int y = 0; y < DEV_H; ++y) { | 114 for (int y = 0; y < DEV_H; ++y) { |
116 for (int x = 0; x < DEV_W; ++x) { | 115 for (int x = 0; x < DEV_W; ++x) { |
117 SkPMColor* pixel = reinterpret_cast<SkPMColor*>(pixels + y * bmp
.rowBytes() + x * bmp.bytesPerPixel()); | 116 SkPMColor* pixel = reinterpret_cast<SkPMColor*>(pixels + y * bmp
.rowBytes() + x * bmp.bytesPerPixel()); |
118 *pixel = getCanvasColor(x, y); | 117 *pixel = getCanvasColor(x, y); |
119 } | 118 } |
120 } | 119 } |
121 } | 120 } |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 | 222 |
224 kBitmapInitCnt | 223 kBitmapInitCnt |
225 }; | 224 }; |
226 | 225 |
227 static BitmapInit nextBMI(BitmapInit bmi) { | 226 static BitmapInit nextBMI(BitmapInit bmi) { |
228 int x = bmi; | 227 int x = bmi; |
229 return static_cast<BitmapInit>(++x); | 228 return static_cast<BitmapInit>(++x); |
230 } | 229 } |
231 | 230 |
232 static void init_bitmap(SkBitmap* bitmap, const SkIRect& rect, BitmapInit init)
{ | 231 static void init_bitmap(SkBitmap* bitmap, const SkIRect& rect, BitmapInit init)
{ |
233 int w = rect.width(); | 232 SkImageInfo info = SkImageInfo::MakeN32Premul(rect.width(), rect.height()); |
234 int h = rect.height(); | 233 size_t rowBytes = 0; |
235 int rowBytes = 0; | |
236 bool alloc = true; | 234 bool alloc = true; |
237 switch (init) { | 235 switch (init) { |
238 case kNoPixels_BitmapInit: | 236 case kNoPixels_BitmapInit: |
239 alloc = false; | 237 alloc = false; |
240 case kTight_BitmapInit: | 238 case kTight_BitmapInit: |
241 break; | 239 break; |
242 case kRowBytes_BitmapInit: | 240 case kRowBytes_BitmapInit: |
243 rowBytes = w * sizeof(SkPMColor) + 16 * sizeof(SkPMColor); | 241 rowBytes = (info.width() + 16) * sizeof(SkPMColor); |
244 break; | 242 break; |
245 default: | 243 default: |
246 SkASSERT(0); | 244 SkASSERT(0); |
247 break; | 245 break; |
248 } | 246 } |
249 bitmap->setConfig(SkBitmap::kARGB_8888_Config, w, h, rowBytes); | 247 |
250 if (alloc) { | 248 if (alloc) { |
251 bitmap->allocPixels(); | 249 bitmap->allocPixels(info); |
| 250 } else { |
| 251 bitmap->setConfig(info, rowBytes); |
252 } | 252 } |
253 } | 253 } |
254 | 254 |
255 DEF_GPUTEST(ReadPixels, reporter, factory) { | 255 DEF_GPUTEST(ReadPixels, reporter, factory) { |
256 const SkIRect testRects[] = { | 256 const SkIRect testRects[] = { |
257 // entire thing | 257 // entire thing |
258 DEV_RECT, | 258 DEV_RECT, |
259 // larger on all sides | 259 // larger on all sides |
260 SkIRect::MakeLTRB(-10, -10, DEV_W + 10, DEV_H + 10), | 260 SkIRect::MakeLTRB(-10, -10, DEV_W + 10, DEV_H + 10), |
261 // fully contained | 261 // fully contained |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
400 clippedRect.fTop, true, false, | 400 clippedRect.fTop, true, false, |
401 SkCanvas::kNative_Premul_Config8888); | 401 SkCanvas::kNative_Premul_Config8888); |
402 } else { | 402 } else { |
403 REPORTER_ASSERT(reporter, !success); | 403 REPORTER_ASSERT(reporter, !success); |
404 } | 404 } |
405 } | 405 } |
406 } | 406 } |
407 } | 407 } |
408 } | 408 } |
409 } | 409 } |
OLD | NEW |