| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 | 8 |
| 9 #include "SkDevice.h" | 9 #include "SkDevice.h" |
| 10 #include "SkMetaData.h" | 10 #include "SkMetaData.h" |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 85 SkIRect srcRect = SkIRect::MakeXYWH(x, y, bitmap->width(), | 85 SkIRect srcRect = SkIRect::MakeXYWH(x, y, bitmap->width(), |
| 86 bitmap->height()); | 86 bitmap->height()); |
| 87 SkIRect devbounds = SkIRect::MakeWH(src.width(), src.height()); | 87 SkIRect devbounds = SkIRect::MakeWH(src.width(), src.height()); |
| 88 if (!srcRect.intersect(devbounds)) { | 88 if (!srcRect.intersect(devbounds)) { |
| 89 return false; | 89 return false; |
| 90 } | 90 } |
| 91 | 91 |
| 92 SkBitmap tmp; | 92 SkBitmap tmp; |
| 93 SkBitmap* bmp; | 93 SkBitmap* bmp; |
| 94 if (bitmap->isNull()) { | 94 if (bitmap->isNull()) { |
| 95 tmp.setConfig(SkBitmap::kARGB_8888_Config, bitmap->width(), | 95 if (!tmp.allocPixels(SkImageInfo::MakeN32Premul(bitmap->width(), |
| 96 bitmap->height()); | 96 bitmap->height()))) { |
| 97 if (!tmp.allocPixels()) { | |
| 98 return false; | 97 return false; |
| 99 } | 98 } |
| 100 bmp = &tmp; | 99 bmp = &tmp; |
| 101 } else { | 100 } else { |
| 102 bmp = bitmap; | 101 bmp = bitmap; |
| 103 } | 102 } |
| 104 | 103 |
| 105 SkIRect subrect = srcRect; | 104 SkIRect subrect = srcRect; |
| 106 subrect.offset(-x, -y); | 105 subrect.offset(-x, -y); |
| 107 SkBitmap bmpSubset; | 106 SkBitmap bmpSubset; |
| 108 bmp->extractSubset(&bmpSubset, subrect); | 107 bmp->extractSubset(&bmpSubset, subrect); |
| 109 | 108 |
| 110 bool result = this->onReadPixels(bmpSubset, | 109 bool result = this->onReadPixels(bmpSubset, |
| 111 srcRect.fLeft, | 110 srcRect.fLeft, |
| 112 srcRect.fTop, | 111 srcRect.fTop, |
| 113 config8888); | 112 config8888); |
| 114 if (result && bmp == &tmp) { | 113 if (result && bmp == &tmp) { |
| 115 tmp.swap(*bitmap); | 114 tmp.swap(*bitmap); |
| 116 } | 115 } |
| 117 return result; | 116 return result; |
| 118 } | 117 } |
| OLD | NEW |