| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2008 The Android Open Source Project | 3 * Copyright 2008 The Android Open Source Project |
| 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 | 9 |
| 10 #include "SkBitmap.h" | 10 #include "SkBitmap.h" |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 case SkBitmap::kIndex8_Config: | 339 case SkBitmap::kIndex8_Config: |
| 340 ct = kIndex_8_SkColorType; | 340 ct = kIndex_8_SkColorType; |
| 341 break; | 341 break; |
| 342 case SkBitmap::kRGB_565_Config: | 342 case SkBitmap::kRGB_565_Config: |
| 343 ct = kRGB_565_SkColorType; | 343 ct = kRGB_565_SkColorType; |
| 344 break; | 344 break; |
| 345 case SkBitmap::kARGB_4444_Config: | 345 case SkBitmap::kARGB_4444_Config: |
| 346 ct = kARGB_4444_SkColorType; | 346 ct = kARGB_4444_SkColorType; |
| 347 break; | 347 break; |
| 348 case SkBitmap::kARGB_8888_Config: | 348 case SkBitmap::kARGB_8888_Config: |
| 349 ct = kN32_SkColorType; | 349 ct = kPMColor_SkColorType; |
| 350 break; | 350 break; |
| 351 case SkBitmap::kNo_Config: | 351 case SkBitmap::kNo_Config: |
| 352 default: | 352 default: |
| 353 return false; | 353 return false; |
| 354 } | 354 } |
| 355 if (ctOut) { | 355 if (ctOut) { |
| 356 *ctOut = ct; | 356 *ctOut = ct; |
| 357 } | 357 } |
| 358 return true; | 358 return true; |
| 359 } | 359 } |
| (...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 990 | 990 |
| 991 bool SkBitmap::canCopyTo(SkColorType dstColorType) const { | 991 bool SkBitmap::canCopyTo(SkColorType dstColorType) const { |
| 992 if (this->colorType() == kUnknown_SkColorType) { | 992 if (this->colorType() == kUnknown_SkColorType) { |
| 993 return false; | 993 return false; |
| 994 } | 994 } |
| 995 | 995 |
| 996 bool sameConfigs = (this->colorType() == dstColorType); | 996 bool sameConfigs = (this->colorType() == dstColorType); |
| 997 switch (dstColorType) { | 997 switch (dstColorType) { |
| 998 case kAlpha_8_SkColorType: | 998 case kAlpha_8_SkColorType: |
| 999 case kRGB_565_SkColorType: | 999 case kRGB_565_SkColorType: |
| 1000 case kN32_SkColorType: | 1000 case kPMColor_SkColorType: |
| 1001 break; | 1001 break; |
| 1002 case kIndex_8_SkColorType: | 1002 case kIndex_8_SkColorType: |
| 1003 if (!sameConfigs) { | 1003 if (!sameConfigs) { |
| 1004 return false; | 1004 return false; |
| 1005 } | 1005 } |
| 1006 break; | 1006 break; |
| 1007 case kARGB_4444_SkColorType: | 1007 case kARGB_4444_SkColorType: |
| 1008 return sameConfigs || kN32_SkColorType == this->colorType(); | 1008 return sameConfigs || kPMColor_SkColorType == this->colorType(); |
| 1009 default: | 1009 default: |
| 1010 return false; | 1010 return false; |
| 1011 } | 1011 } |
| 1012 return true; | 1012 return true; |
| 1013 } | 1013 } |
| 1014 | 1014 |
| 1015 bool SkBitmap::copyTo(SkBitmap* dst, SkColorType dstColorType, | 1015 bool SkBitmap::copyTo(SkBitmap* dst, SkColorType dstColorType, |
| 1016 Allocator* alloc) const { | 1016 Allocator* alloc) const { |
| 1017 if (!this->canCopyTo(dstColorType)) { | 1017 if (!this->canCopyTo(dstColorType)) { |
| 1018 return false; | 1018 return false; |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1109 char* dstP = reinterpret_cast<char*>(tmpDst.getPixels()); | 1109 char* dstP = reinterpret_cast<char*>(tmpDst.getPixels()); |
| 1110 // to be sure we don't read too much, only copy our logical pixels | 1110 // to be sure we don't read too much, only copy our logical pixels |
| 1111 size_t bytesToCopy = tmpDst.width() * tmpDst.bytesPerPixel(); | 1111 size_t bytesToCopy = tmpDst.width() * tmpDst.bytesPerPixel(); |
| 1112 for (int y = 0; y < tmpDst.height(); y++) { | 1112 for (int y = 0; y < tmpDst.height(); y++) { |
| 1113 memcpy(dstP, srcP, bytesToCopy); | 1113 memcpy(dstP, srcP, bytesToCopy); |
| 1114 srcP += src->rowBytes(); | 1114 srcP += src->rowBytes(); |
| 1115 dstP += tmpDst.rowBytes(); | 1115 dstP += tmpDst.rowBytes(); |
| 1116 } | 1116 } |
| 1117 } | 1117 } |
| 1118 } else if (kARGB_4444_SkColorType == dstColorType | 1118 } else if (kARGB_4444_SkColorType == dstColorType |
| 1119 && kN32_SkColorType == src->colorType()) { | 1119 && kPMColor_SkColorType == src->colorType()) { |
| 1120 SkASSERT(src->height() == tmpDst.height()); | 1120 SkASSERT(src->height() == tmpDst.height()); |
| 1121 SkASSERT(src->width() == tmpDst.width()); | 1121 SkASSERT(src->width() == tmpDst.width()); |
| 1122 for (int y = 0; y < src->height(); ++y) { | 1122 for (int y = 0; y < src->height(); ++y) { |
| 1123 SkPMColor16* SK_RESTRICT dstRow = (SkPMColor16*) tmpDst.getAddr16(0,
y); | 1123 SkPMColor16* SK_RESTRICT dstRow = (SkPMColor16*) tmpDst.getAddr16(0,
y); |
| 1124 SkPMColor* SK_RESTRICT srcRow = (SkPMColor*) src->getAddr32(0, y); | 1124 SkPMColor* SK_RESTRICT srcRow = (SkPMColor*) src->getAddr32(0, y); |
| 1125 DITHER_4444_SCAN(y); | 1125 DITHER_4444_SCAN(y); |
| 1126 for (int x = 0; x < src->width(); ++x) { | 1126 for (int x = 0; x < src->width(); ++x) { |
| 1127 dstRow[x] = SkDitherARGB32To4444(srcRow[x], | 1127 dstRow[x] = SkDitherARGB32To4444(srcRow[x], |
| 1128 DITHER_VALUE(x)); | 1128 DITHER_VALUE(x)); |
| 1129 } | 1129 } |
| (...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1728 /////////////////////////////////////////////////////////////////////////////// | 1728 /////////////////////////////////////////////////////////////////////////////// |
| 1729 | 1729 |
| 1730 #ifdef SK_DEBUG | 1730 #ifdef SK_DEBUG |
| 1731 void SkImageInfo::validate() const { | 1731 void SkImageInfo::validate() const { |
| 1732 SkASSERT(fWidth >= 0); | 1732 SkASSERT(fWidth >= 0); |
| 1733 SkASSERT(fHeight >= 0); | 1733 SkASSERT(fHeight >= 0); |
| 1734 SkASSERT(SkColorTypeIsValid(fColorType)); | 1734 SkASSERT(SkColorTypeIsValid(fColorType)); |
| 1735 SkASSERT(SkAlphaTypeIsValid(fAlphaType)); | 1735 SkASSERT(SkAlphaTypeIsValid(fAlphaType)); |
| 1736 } | 1736 } |
| 1737 #endif | 1737 #endif |
| OLD | NEW |