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 "SkBitmapDevice.h" | 8 #include "SkBitmapDevice.h" |
9 #include "SkConfig8888.h" | 9 #include "SkConfig8888.h" |
10 #include "SkDraw.h" | 10 #include "SkDraw.h" |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 } | 157 } |
158 | 158 |
159 // write directly to the device if it has pixels and is SkPMColor | 159 // write directly to the device if it has pixels and is SkPMColor |
160 bool drawSprite; | 160 bool drawSprite; |
161 if (SkBitmap::kARGB_8888_Config == dstBmp.config() && !dstBmp.isNull())
{ | 161 if (SkBitmap::kARGB_8888_Config == dstBmp.config() && !dstBmp.isNull())
{ |
162 // we can write directly to the dst when doing the conversion | 162 // we can write directly to the dst when doing the conversion |
163 dstBmp.extractSubset(&dstBmp, spriteRect); | 163 dstBmp.extractSubset(&dstBmp, spriteRect); |
164 drawSprite = false; | 164 drawSprite = false; |
165 } else { | 165 } else { |
166 // we convert to a temporary bitmap and draw that as a sprite | 166 // we convert to a temporary bitmap and draw that as a sprite |
167 dstBmp.setConfig(SkBitmap::kARGB_8888_Config, | 167 if (!dstBmp.allocPixels(SkImageInfo::MakeN32Premul(spriteRect.width(
), |
168 spriteRect.width(), | 168 spriteRect.height
()))) { |
169 spriteRect.height()); | |
170 if (!dstBmp.allocPixels()) { | |
171 return; | 169 return; |
172 } | 170 } |
173 drawSprite = true; | 171 drawSprite = true; |
174 } | 172 } |
175 | 173 |
176 // copy pixels to dstBmp and convert from config8888 to native config. | 174 // copy pixels to dstBmp and convert from config8888 to native config. |
177 SkAutoLockPixels alp(bitmap); | 175 SkAutoLockPixels alp(bitmap); |
178 uint32_t* srcPixels = bitmap.getAddr32(spriteRect.fLeft - x, | 176 uint32_t* srcPixels = bitmap.getAddr32(spriteRect.fLeft - x, |
179 spriteRect.fTop - y); | 177 spriteRect.fTop - y); |
180 SkCopyConfig8888ToBitmap(dstBmp, | 178 SkCopyConfig8888ToBitmap(dstBmp, |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 paint.getStyle() != SkPaint::kFill_Style || | 396 paint.getStyle() != SkPaint::kFill_Style || |
399 !SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrcOver_Mode)) { | 397 !SkXfermode::IsMode(paint.getXfermode(), SkXfermode::kSrcOver_Mode)) { |
400 // turn off lcd | 398 // turn off lcd |
401 flags->fFlags = paint.getFlags() & ~SkPaint::kLCDRenderText_Flag; | 399 flags->fFlags = paint.getFlags() & ~SkPaint::kLCDRenderText_Flag; |
402 flags->fHinting = paint.getHinting(); | 400 flags->fHinting = paint.getHinting(); |
403 return true; | 401 return true; |
404 } | 402 } |
405 // we're cool with the paint as is | 403 // we're cool with the paint as is |
406 return false; | 404 return false; |
407 } | 405 } |
OLD | NEW |