| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2008 The Android Open Source Project | 2 * Copyright 2008 The Android Open Source Project |
| 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 "SkAtomics.h" | 8 #include "SkAtomics.h" |
| 9 #include "SkBitmap.h" | 9 #include "SkBitmap.h" |
| 10 #include "SkColorPriv.h" | 10 #include "SkColorPriv.h" |
| (...skipping 1127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1138 for (int y = height - 1; y >= 1; --y) { | 1138 for (int y = height - 1; y >= 1; --y) { |
| 1139 memmove(dstRow, srcRow, snugRB); | 1139 memmove(dstRow, srcRow, snugRB); |
| 1140 srcRow -= snugRB; | 1140 srcRow -= snugRB; |
| 1141 dstRow -= ramRB; | 1141 dstRow -= ramRB; |
| 1142 } | 1142 } |
| 1143 SkASSERT(srcRow == dstRow); // first row does not need to be moved | 1143 SkASSERT(srcRow == dstRow); // first row does not need to be moved |
| 1144 } | 1144 } |
| 1145 | 1145 |
| 1146 SkAutoTUnref<SkColorTable> ctable; | 1146 SkAutoTUnref<SkColorTable> ctable; |
| 1147 if (buffer->readBool()) { | 1147 if (buffer->readBool()) { |
| 1148 ctable.reset(new SkColorTable(*buffer)); | 1148 ctable.reset(SkColorTable::Create(*buffer)); |
| 1149 if (!ctable) { |
| 1150 return false; |
| 1151 } |
| 1149 | 1152 |
| 1150 unsigned char maxIndex = ctable->count() ? ctable->count()-1 : 0; | 1153 if (info.isEmpty()) { |
| 1151 for (uint64_t i = 0; i < ramSize; ++i) { | 1154 // require an empty ctable |
| 1152 dst[i] = SkTMin(dst[i], maxIndex); | 1155 if (ctable->count() != 0) { |
| 1156 buffer->validate(false); |
| 1157 return false; |
| 1158 } |
| 1159 } else { |
| 1160 // require a non-empty ctable |
| 1161 if (ctable->count() == 0) { |
| 1162 buffer->validate(false); |
| 1163 return false; |
| 1164 } |
| 1165 unsigned char maxIndex = ctable->count() - 1; |
| 1166 for (uint64_t i = 0; i < ramSize; ++i) { |
| 1167 dst[i] = SkTMin(dst[i], maxIndex); |
| 1168 } |
| 1153 } | 1169 } |
| 1154 } | 1170 } |
| 1155 | 1171 |
| 1156 SkAutoTUnref<SkPixelRef> pr(SkMallocPixelRef::NewWithData(info, info.minRowB
ytes(), | 1172 SkAutoTUnref<SkPixelRef> pr(SkMallocPixelRef::NewWithData(info, info.minRowB
ytes(), |
| 1157 ctable.get(), data
.get())); | 1173 ctable.get(), data
.get())); |
| 1158 if (!pr.get()) { | 1174 if (!pr.get()) { |
| 1159 return false; | 1175 return false; |
| 1160 } | 1176 } |
| 1161 bitmap->setInfo(pr->info()); | 1177 bitmap->setInfo(pr->info()); |
| 1162 bitmap->setPixelRef(pr, 0, 0); | 1178 bitmap->setPixelRef(pr, 0, 0); |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1300 /////////////////////////////////////////////////////////////////////////////// | 1316 /////////////////////////////////////////////////////////////////////////////// |
| 1301 | 1317 |
| 1302 #ifdef SK_DEBUG | 1318 #ifdef SK_DEBUG |
| 1303 void SkImageInfo::validate() const { | 1319 void SkImageInfo::validate() const { |
| 1304 SkASSERT(fWidth >= 0); | 1320 SkASSERT(fWidth >= 0); |
| 1305 SkASSERT(fHeight >= 0); | 1321 SkASSERT(fHeight >= 0); |
| 1306 SkASSERT(SkColorTypeIsValid(fColorType)); | 1322 SkASSERT(SkColorTypeIsValid(fColorType)); |
| 1307 SkASSERT(SkAlphaTypeIsValid(fAlphaType)); | 1323 SkASSERT(SkAlphaTypeIsValid(fAlphaType)); |
| 1308 } | 1324 } |
| 1309 #endif | 1325 #endif |
| OLD | NEW |