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 "SkBitmap.h" | 8 #include "SkBitmap.h" |
9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
10 #include "SkConfig8888.h" | 10 #include "SkConfig8888.h" |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 dst8 += dstRB; | 166 dst8 += dstRB; |
167 } | 167 } |
168 } | 168 } |
169 | 169 |
170 bool SkPixelInfo::CopyPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t
dstRB, | 170 bool SkPixelInfo::CopyPixels(const SkImageInfo& dstInfo, void* dstPixels, size_t
dstRB, |
171 const SkImageInfo& srcInfo, const void* srcPixels,
size_t srcRB, | 171 const SkImageInfo& srcInfo, const void* srcPixels,
size_t srcRB, |
172 SkColorTable* ctable) { | 172 SkColorTable* ctable) { |
173 if (srcInfo.dimensions() != dstInfo.dimensions()) { | 173 if (srcInfo.dimensions() != dstInfo.dimensions()) { |
174 return false; | 174 return false; |
175 } | 175 } |
176 | 176 |
177 const int width = srcInfo.width(); | 177 const int width = srcInfo.width(); |
178 const int height = srcInfo.height(); | 178 const int height = srcInfo.height(); |
| 179 |
| 180 // Do the easiest one first : both configs are equal |
| 181 if ((srcInfo == dstInfo) && !ctable) { |
| 182 size_t bytes = width * srcInfo.bytesPerPixel(); |
| 183 for (int y = 0; y < height; ++y) { |
| 184 memcpy(dstPixels, srcPixels, bytes); |
| 185 srcPixels = (const char*)srcPixels + srcRB; |
| 186 dstPixels = (char*)dstPixels + dstRB; |
| 187 } |
| 188 return true; |
| 189 } |
179 | 190 |
180 // Handle fancy alpha swizzling if both are ARGB32 | 191 // Handle fancy alpha swizzling if both are ARGB32 |
181 if (4 == srcInfo.bytesPerPixel() && 4 == dstInfo.bytesPerPixel()) { | 192 if (4 == srcInfo.bytesPerPixel() && 4 == dstInfo.bytesPerPixel()) { |
182 SkDstPixelInfo dstPI; | 193 SkDstPixelInfo dstPI; |
183 dstPI.fColorType = dstInfo.colorType(); | 194 dstPI.fColorType = dstInfo.colorType(); |
184 dstPI.fAlphaType = dstInfo.alphaType(); | 195 dstPI.fAlphaType = dstInfo.alphaType(); |
185 dstPI.fPixels = dstPixels; | 196 dstPI.fPixels = dstPixels; |
186 dstPI.fRowBytes = dstRB; | 197 dstPI.fRowBytes = dstRB; |
187 | 198 |
188 SkSrcPixelInfo srcPI; | 199 SkSrcPixelInfo srcPI; |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 | 297 |
287 SkPaint paint; | 298 SkPaint paint; |
288 paint.setDither(true); | 299 paint.setDither(true); |
289 | 300 |
290 canvas->clear(0); | 301 canvas->clear(0); |
291 canvas->drawBitmap(bm, 0, 0, &paint); | 302 canvas->drawBitmap(bm, 0, 0, &paint); |
292 return true; | 303 return true; |
293 } | 304 } |
294 } | 305 } |
295 | 306 |
OLD | NEW |