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 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 break; | 195 break; |
196 default: | 196 default: |
197 return false; | 197 return false; |
198 } | 198 } |
199 if (canonical) { | 199 if (canonical) { |
200 *canonical = alphaType; | 200 *canonical = alphaType; |
201 } | 201 } |
202 return true; | 202 return true; |
203 } | 203 } |
204 | 204 |
205 bool SkBitmap::setInfo(const SkImageInfo& origInfo, size_t rowBytes) { | 205 bool SkBitmap::setConfig(const SkImageInfo& origInfo, size_t rowBytes) { |
206 SkImageInfo info = origInfo; | 206 SkImageInfo info = origInfo; |
207 | 207 |
208 if (!validate_alphaType(info.fColorType, info.fAlphaType, | 208 if (!validate_alphaType(info.fColorType, info.fAlphaType, |
209 &info.fAlphaType)) { | 209 &info.fAlphaType)) { |
210 return reset_return_false(this); | 210 return reset_return_false(this); |
211 } | 211 } |
212 | 212 |
213 // require that rowBytes fit in 31bits | 213 // require that rowBytes fit in 31bits |
214 int64_t mrb = info.minRowBytes64(); | 214 int64_t mrb = info.minRowBytes64(); |
215 if ((int32_t)mrb != mrb) { | 215 if ((int32_t)mrb != mrb) { |
(...skipping 18 matching lines...) Expand all Loading... |
234 this->freePixels(); | 234 this->freePixels(); |
235 | 235 |
236 fInfo = info; | 236 fInfo = info; |
237 fRowBytes = SkToU32(rowBytes); | 237 fRowBytes = SkToU32(rowBytes); |
238 return true; | 238 return true; |
239 } | 239 } |
240 | 240 |
241 bool SkBitmap::setConfig(Config config, int width, int height, size_t rowBytes, | 241 bool SkBitmap::setConfig(Config config, int width, int height, size_t rowBytes, |
242 SkAlphaType alphaType) { | 242 SkAlphaType alphaType) { |
243 SkColorType ct = SkBitmapConfigToColorType(config); | 243 SkColorType ct = SkBitmapConfigToColorType(config); |
244 return this->setInfo(SkImageInfo::Make(width, height, ct, alphaType), rowByt
es); | 244 return this->setConfig(SkImageInfo::Make(width, height, ct, alphaType), |
| 245 rowBytes); |
245 } | 246 } |
246 | 247 |
247 bool SkBitmap::setAlphaType(SkAlphaType alphaType) { | 248 bool SkBitmap::setAlphaType(SkAlphaType alphaType) { |
248 if (!validate_alphaType(fInfo.fColorType, alphaType, &alphaType)) { | 249 if (!validate_alphaType(fInfo.fColorType, alphaType, &alphaType)) { |
249 return false; | 250 return false; |
250 } | 251 } |
251 if (fInfo.fAlphaType != alphaType) { | 252 if (fInfo.fAlphaType != alphaType) { |
252 fInfo.fAlphaType = alphaType; | 253 fInfo.fAlphaType = alphaType; |
253 if (fPixelRef) { | 254 if (fPixelRef) { |
254 fPixelRef->changeAlphaType(alphaType); | 255 fPixelRef->changeAlphaType(alphaType); |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 return allocator->allocPixelRef(this, ctable); | 412 return allocator->allocPixelRef(this, ctable); |
412 } | 413 } |
413 | 414 |
414 /////////////////////////////////////////////////////////////////////////////// | 415 /////////////////////////////////////////////////////////////////////////////// |
415 | 416 |
416 bool SkBitmap::allocPixels(const SkImageInfo& info, SkPixelRefFactory* factory, | 417 bool SkBitmap::allocPixels(const SkImageInfo& info, SkPixelRefFactory* factory, |
417 SkColorTable* ctable) { | 418 SkColorTable* ctable) { |
418 if (kIndex_8_SkColorType == info.fColorType && NULL == ctable) { | 419 if (kIndex_8_SkColorType == info.fColorType && NULL == ctable) { |
419 return reset_return_false(this); | 420 return reset_return_false(this); |
420 } | 421 } |
421 if (!this->setInfo(info)) { | 422 if (!this->setConfig(info)) { |
422 return reset_return_false(this); | 423 return reset_return_false(this); |
423 } | 424 } |
424 | 425 |
425 SkMallocPixelRef::PRFactory defaultFactory; | 426 SkMallocPixelRef::PRFactory defaultFactory; |
426 if (NULL == factory) { | 427 if (NULL == factory) { |
427 factory = &defaultFactory; | 428 factory = &defaultFactory; |
428 } | 429 } |
429 | 430 |
430 SkPixelRef* pr = factory->create(info, ctable); | 431 SkPixelRef* pr = factory->create(info, ctable); |
431 if (NULL == pr) { | 432 if (NULL == pr) { |
432 return reset_return_false(this); | 433 return reset_return_false(this); |
433 } | 434 } |
434 this->setPixelRef(pr)->unref(); | 435 this->setPixelRef(pr)->unref(); |
435 | 436 |
436 // TODO: lockPixels could/should return bool or void*/NULL | 437 // TODO: lockPixels could/should return bool or void*/NULL |
437 this->lockPixels(); | 438 this->lockPixels(); |
438 if (NULL == this->getPixels()) { | 439 if (NULL == this->getPixels()) { |
439 return reset_return_false(this); | 440 return reset_return_false(this); |
440 } | 441 } |
441 return true; | 442 return true; |
442 } | 443 } |
443 | 444 |
444 bool SkBitmap::installPixels(const SkImageInfo& info, void* pixels, size_t rb, S
kColorTable* ct, | 445 bool SkBitmap::installPixels(const SkImageInfo& info, void* pixels, size_t rb, S
kColorTable* ct, |
445 void (*releaseProc)(void* addr, void* context), voi
d* context) { | 446 void (*releaseProc)(void* addr, void* context), voi
d* context) { |
446 if (!this->setInfo(info, rb)) { | 447 if (!this->setConfig(info, rb)) { |
447 this->reset(); | 448 this->reset(); |
448 return false; | 449 return false; |
449 } | 450 } |
450 | 451 |
451 SkPixelRef* pr = SkMallocPixelRef::NewWithProc(info, rb, ct, pixels, release
Proc, context); | 452 SkPixelRef* pr = SkMallocPixelRef::NewWithProc(info, rb, ct, pixels, release
Proc, context); |
452 if (!pr) { | 453 if (!pr) { |
453 this->reset(); | 454 this->reset(); |
454 return false; | 455 return false; |
455 } | 456 } |
456 | 457 |
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
876 srcRect.set(0, 0, this->width(), this->height()); | 877 srcRect.set(0, 0, this->width(), this->height()); |
877 if (!r.intersect(srcRect, subset)) { | 878 if (!r.intersect(srcRect, subset)) { |
878 return false; // r is empty (i.e. no intersection) | 879 return false; // r is empty (i.e. no intersection) |
879 } | 880 } |
880 | 881 |
881 if (fPixelRef->getTexture() != NULL) { | 882 if (fPixelRef->getTexture() != NULL) { |
882 // Do a deep copy | 883 // Do a deep copy |
883 SkPixelRef* pixelRef = fPixelRef->deepCopy(this->config(), &subset); | 884 SkPixelRef* pixelRef = fPixelRef->deepCopy(this->config(), &subset); |
884 if (pixelRef != NULL) { | 885 if (pixelRef != NULL) { |
885 SkBitmap dst; | 886 SkBitmap dst; |
886 dst.setInfo(SkImageInfo::Make(subset.width(), subset.height(), | 887 dst.setConfig(SkImageInfo::Make(subset.width(), subset.height(), |
887 this->colorType(), this->alphaType()))
; | 888 this->colorType(), this->alphaType()
)); |
888 dst.setIsVolatile(this->isVolatile()); | 889 dst.setIsVolatile(this->isVolatile()); |
889 dst.setPixelRef(pixelRef)->unref(); | 890 dst.setPixelRef(pixelRef)->unref(); |
890 SkDEBUGCODE(dst.validate()); | 891 SkDEBUGCODE(dst.validate()); |
891 result->swap(dst); | 892 result->swap(dst); |
892 return true; | 893 return true; |
893 } | 894 } |
894 } | 895 } |
895 | 896 |
896 // If the upper left of the rectangle was outside the bounds of this SkBitma
p, we should have | 897 // If the upper left of the rectangle was outside the bounds of this SkBitma
p, we should have |
897 // exited above. | 898 // exited above. |
898 SkASSERT(static_cast<unsigned>(r.fLeft) < static_cast<unsigned>(this->width(
))); | 899 SkASSERT(static_cast<unsigned>(r.fLeft) < static_cast<unsigned>(this->width(
))); |
899 SkASSERT(static_cast<unsigned>(r.fTop) < static_cast<unsigned>(this->height(
))); | 900 SkASSERT(static_cast<unsigned>(r.fTop) < static_cast<unsigned>(this->height(
))); |
900 | 901 |
901 SkBitmap dst; | 902 SkBitmap dst; |
902 dst.setInfo(SkImageInfo::Make(r.width(), r.height(), this->colorType(), this
->alphaType()), | 903 dst.setConfig(SkImageInfo::Make(r.width(), r.height(), this->colorType(), th
is->alphaType()), |
903 this->rowBytes()); | 904 this->rowBytes()); |
904 dst.setIsVolatile(this->isVolatile()); | 905 dst.setIsVolatile(this->isVolatile()); |
905 | 906 |
906 if (fPixelRef) { | 907 if (fPixelRef) { |
907 SkIPoint origin = fPixelRefOrigin; | 908 SkIPoint origin = fPixelRefOrigin; |
908 origin.fX += r.fLeft; | 909 origin.fX += r.fLeft; |
909 origin.fY += r.fTop; | 910 origin.fY += r.fTop; |
910 // share the pixelref with a custom offset | 911 // share the pixelref with a custom offset |
911 dst.setPixelRef(fPixelRef, origin); | 912 dst.setPixelRef(fPixelRef, origin); |
912 } | 913 } |
913 SkDEBUGCODE(dst.validate();) | 914 SkDEBUGCODE(dst.validate();) |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
986 return false; | 987 return false; |
987 } | 988 } |
988 | 989 |
989 // The only way to be readyToDraw is if fPixelRef is non NULL. | 990 // The only way to be readyToDraw is if fPixelRef is non NULL. |
990 SkASSERT(fPixelRef != NULL); | 991 SkASSERT(fPixelRef != NULL); |
991 | 992 |
992 SkImageInfo dstInfo = src->info(); | 993 SkImageInfo dstInfo = src->info(); |
993 dstInfo.fColorType = dstColorType; | 994 dstInfo.fColorType = dstColorType; |
994 | 995 |
995 SkBitmap tmpDst; | 996 SkBitmap tmpDst; |
996 if (!tmpDst.setInfo(dstInfo)) { | 997 if (!tmpDst.setConfig(dstInfo)) { |
997 return false; | 998 return false; |
998 } | 999 } |
999 | 1000 |
1000 // allocate colortable if srcConfig == kIndex8_Config | 1001 // allocate colortable if srcConfig == kIndex8_Config |
1001 SkAutoTUnref<SkColorTable> ctable; | 1002 SkAutoTUnref<SkColorTable> ctable; |
1002 if (dstColorType == kIndex_8_SkColorType) { | 1003 if (dstColorType == kIndex_8_SkColorType) { |
1003 // TODO: can we just ref() the src colortable? Is it reentrant-safe? | 1004 // TODO: can we just ref() the src colortable? Is it reentrant-safe? |
1004 ctable.reset(SkNEW_ARGS(SkColorTable, (*src->getColorTable()))); | 1005 ctable.reset(SkNEW_ARGS(SkColorTable, (*src->getColorTable()))); |
1005 } | 1006 } |
1006 if (!tmpDst.allocPixels(alloc, ctable)) { | 1007 if (!tmpDst.allocPixels(alloc, ctable)) { |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1094 if (pixelRef) { | 1095 if (pixelRef) { |
1095 uint32_t rowBytes; | 1096 uint32_t rowBytes; |
1096 if (this->colorType() == dstCT) { | 1097 if (this->colorType() == dstCT) { |
1097 // Since there is no subset to pass to deepCopy, and deepCopy | 1098 // Since there is no subset to pass to deepCopy, and deepCopy |
1098 // succeeded, the new pixel ref must be identical. | 1099 // succeeded, the new pixel ref must be identical. |
1099 SkASSERT(fPixelRef->info() == pixelRef->info()); | 1100 SkASSERT(fPixelRef->info() == pixelRef->info()); |
1100 pixelRef->cloneGenID(*fPixelRef); | 1101 pixelRef->cloneGenID(*fPixelRef); |
1101 // Use the same rowBytes as the original. | 1102 // Use the same rowBytes as the original. |
1102 rowBytes = fRowBytes; | 1103 rowBytes = fRowBytes; |
1103 } else { | 1104 } else { |
1104 // With the new config, an appropriate fRowBytes will be compute
d by setInfo. | 1105 // With the new config, an appropriate fRowBytes will be compute
d by setConfig. |
1105 rowBytes = 0; | 1106 rowBytes = 0; |
1106 } | 1107 } |
1107 | 1108 |
1108 SkImageInfo info = fInfo; | 1109 SkImageInfo info = fInfo; |
1109 info.fColorType = dstCT; | 1110 info.fColorType = dstCT; |
1110 if (!dst->setInfo(info, rowBytes)) { | 1111 if (!dst->setConfig(info, rowBytes)) { |
1111 return false; | 1112 return false; |
1112 } | 1113 } |
1113 dst->setPixelRef(pixelRef, fPixelRefOrigin)->unref(); | 1114 dst->setPixelRef(pixelRef, fPixelRefOrigin)->unref(); |
1114 return true; | 1115 return true; |
1115 } | 1116 } |
1116 } | 1117 } |
1117 | 1118 |
1118 if (this->getTexture()) { | 1119 if (this->getTexture()) { |
1119 return false; | 1120 return false; |
1120 } else { | 1121 } else { |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1210 // compute our (larger?) dst bounds if we have a filter | 1211 // compute our (larger?) dst bounds if we have a filter |
1211 if (NULL != filter) { | 1212 if (NULL != filter) { |
1212 identity.reset(); | 1213 identity.reset(); |
1213 srcM.fImage = NULL; | 1214 srcM.fImage = NULL; |
1214 if (!filter->filterMask(&dstM, srcM, identity, NULL)) { | 1215 if (!filter->filterMask(&dstM, srcM, identity, NULL)) { |
1215 goto NO_FILTER_CASE; | 1216 goto NO_FILTER_CASE; |
1216 } | 1217 } |
1217 dstM.fRowBytes = SkAlign4(dstM.fBounds.width()); | 1218 dstM.fRowBytes = SkAlign4(dstM.fBounds.width()); |
1218 } else { | 1219 } else { |
1219 NO_FILTER_CASE: | 1220 NO_FILTER_CASE: |
1220 tmpBitmap.setInfo(SkImageInfo::MakeA8(this->width(), this->height()), sr
cM.fRowBytes); | 1221 tmpBitmap.setConfig(SkImageInfo::MakeA8(this->width(), this->height()),
srcM.fRowBytes); |
1221 if (!tmpBitmap.allocPixels(allocator, NULL)) { | 1222 if (!tmpBitmap.allocPixels(allocator, NULL)) { |
1222 // Allocation of pixels for alpha bitmap failed. | 1223 // Allocation of pixels for alpha bitmap failed. |
1223 SkDebugf("extractAlpha failed to allocate (%d,%d) alpha bitmap\n", | 1224 SkDebugf("extractAlpha failed to allocate (%d,%d) alpha bitmap\n", |
1224 tmpBitmap.width(), tmpBitmap.height()); | 1225 tmpBitmap.width(), tmpBitmap.height()); |
1225 return false; | 1226 return false; |
1226 } | 1227 } |
1227 GetBitmapAlpha(*this, tmpBitmap.getAddr8(0, 0), srcM.fRowBytes); | 1228 GetBitmapAlpha(*this, tmpBitmap.getAddr8(0, 0), srcM.fRowBytes); |
1228 if (offset) { | 1229 if (offset) { |
1229 offset->set(0, 0); | 1230 offset->set(0, 0); |
1230 } | 1231 } |
1231 tmpBitmap.swap(*dst); | 1232 tmpBitmap.swap(*dst); |
1232 return true; | 1233 return true; |
1233 } | 1234 } |
1234 srcM.fImage = SkMask::AllocImage(srcM.computeImageSize()); | 1235 srcM.fImage = SkMask::AllocImage(srcM.computeImageSize()); |
1235 SkAutoMaskFreeImage srcCleanup(srcM.fImage); | 1236 SkAutoMaskFreeImage srcCleanup(srcM.fImage); |
1236 | 1237 |
1237 GetBitmapAlpha(*this, srcM.fImage, srcM.fRowBytes); | 1238 GetBitmapAlpha(*this, srcM.fImage, srcM.fRowBytes); |
1238 if (!filter->filterMask(&dstM, srcM, identity, NULL)) { | 1239 if (!filter->filterMask(&dstM, srcM, identity, NULL)) { |
1239 goto NO_FILTER_CASE; | 1240 goto NO_FILTER_CASE; |
1240 } | 1241 } |
1241 SkAutoMaskFreeImage dstCleanup(dstM.fImage); | 1242 SkAutoMaskFreeImage dstCleanup(dstM.fImage); |
1242 | 1243 |
1243 tmpBitmap.setInfo(SkImageInfo::MakeA8(dstM.fBounds.width(), dstM.fBounds.hei
ght()), | 1244 tmpBitmap.setConfig(SkImageInfo::MakeA8(dstM.fBounds.width(), dstM.fBounds.h
eight()), |
1244 dstM.fRowBytes); | 1245 dstM.fRowBytes); |
1245 if (!tmpBitmap.allocPixels(allocator, NULL)) { | 1246 if (!tmpBitmap.allocPixels(allocator, NULL)) { |
1246 // Allocation of pixels for alpha bitmap failed. | 1247 // Allocation of pixels for alpha bitmap failed. |
1247 SkDebugf("extractAlpha failed to allocate (%d,%d) alpha bitmap\n", | 1248 SkDebugf("extractAlpha failed to allocate (%d,%d) alpha bitmap\n", |
1248 tmpBitmap.width(), tmpBitmap.height()); | 1249 tmpBitmap.width(), tmpBitmap.height()); |
1249 return false; | 1250 return false; |
1250 } | 1251 } |
1251 memcpy(tmpBitmap.getPixels(), dstM.fImage, dstM.computeImageSize()); | 1252 memcpy(tmpBitmap.getPixels(), dstM.fImage, dstM.computeImageSize()); |
1252 if (offset) { | 1253 if (offset) { |
1253 offset->set(dstM.fBounds.fLeft, dstM.fBounds.fTop); | 1254 offset->set(dstM.fBounds.fLeft, dstM.fBounds.fTop); |
1254 } | 1255 } |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1324 SkASSERT(srcRow == dstRow); // first row does not need to be moved | 1325 SkASSERT(srcRow == dstRow); // first row does not need to be moved |
1325 } | 1326 } |
1326 | 1327 |
1327 SkAutoTUnref<SkColorTable> ctable; | 1328 SkAutoTUnref<SkColorTable> ctable; |
1328 if (buffer->readBool()) { | 1329 if (buffer->readBool()) { |
1329 ctable.reset(SkNEW_ARGS(SkColorTable, (*buffer))); | 1330 ctable.reset(SkNEW_ARGS(SkColorTable, (*buffer))); |
1330 } | 1331 } |
1331 | 1332 |
1332 SkAutoTUnref<SkPixelRef> pr(SkMallocPixelRef::NewWithData(info, info.minRowB
ytes(), | 1333 SkAutoTUnref<SkPixelRef> pr(SkMallocPixelRef::NewWithData(info, info.minRowB
ytes(), |
1333 ctable.get(), data
.get())); | 1334 ctable.get(), data
.get())); |
1334 bitmap->setInfo(pr->info()); | 1335 bitmap->setConfig(pr->info()); |
1335 bitmap->setPixelRef(pr, 0, 0); | 1336 bitmap->setPixelRef(pr, 0, 0); |
1336 return true; | 1337 return true; |
1337 } | 1338 } |
1338 | 1339 |
1339 enum { | 1340 enum { |
1340 SERIALIZE_PIXELTYPE_NONE, | 1341 SERIALIZE_PIXELTYPE_NONE, |
1341 SERIALIZE_PIXELTYPE_REF_DATA | 1342 SERIALIZE_PIXELTYPE_REF_DATA |
1342 }; | 1343 }; |
1343 | 1344 |
1344 void SkBitmap::legacyUnflatten(SkReadBuffer& buffer) { | 1345 void SkBitmap::legacyUnflatten(SkReadBuffer& buffer) { |
1345 this->reset(); | 1346 this->reset(); |
1346 | 1347 |
1347 SkImageInfo info; | 1348 SkImageInfo info; |
1348 info.unflatten(buffer); | 1349 info.unflatten(buffer); |
1349 size_t rowBytes = buffer.readInt(); | 1350 size_t rowBytes = buffer.readInt(); |
1350 if (!buffer.validate((info.width() >= 0) && (info.height() >= 0) && | 1351 if (!buffer.validate((info.width() >= 0) && (info.height() >= 0) && |
1351 SkColorTypeIsValid(info.fColorType) && | 1352 SkColorTypeIsValid(info.fColorType) && |
1352 SkAlphaTypeIsValid(info.fAlphaType) && | 1353 SkAlphaTypeIsValid(info.fAlphaType) && |
1353 validate_alphaType(info.fColorType, info.fAlphaType) && | 1354 validate_alphaType(info.fColorType, info.fAlphaType) && |
1354 info.validRowBytes(rowBytes))) { | 1355 info.validRowBytes(rowBytes))) { |
1355 return; | 1356 return; |
1356 } | 1357 } |
1357 | 1358 |
1358 bool configIsValid = this->setInfo(info, rowBytes); | 1359 bool configIsValid = this->setConfig(info, rowBytes); |
1359 buffer.validate(configIsValid); | 1360 buffer.validate(configIsValid); |
1360 | 1361 |
1361 int reftype = buffer.readInt(); | 1362 int reftype = buffer.readInt(); |
1362 if (buffer.validate((SERIALIZE_PIXELTYPE_REF_DATA == reftype) || | 1363 if (buffer.validate((SERIALIZE_PIXELTYPE_REF_DATA == reftype) || |
1363 (SERIALIZE_PIXELTYPE_NONE == reftype))) { | 1364 (SERIALIZE_PIXELTYPE_NONE == reftype))) { |
1364 switch (reftype) { | 1365 switch (reftype) { |
1365 case SERIALIZE_PIXELTYPE_REF_DATA: { | 1366 case SERIALIZE_PIXELTYPE_REF_DATA: { |
1366 SkIPoint origin; | 1367 SkIPoint origin; |
1367 origin.fX = buffer.readInt(); | 1368 origin.fX = buffer.readInt(); |
1368 origin.fY = buffer.readInt(); | 1369 origin.fY = buffer.readInt(); |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1474 /////////////////////////////////////////////////////////////////////////////// | 1475 /////////////////////////////////////////////////////////////////////////////// |
1475 | 1476 |
1476 #ifdef SK_DEBUG | 1477 #ifdef SK_DEBUG |
1477 void SkImageInfo::validate() const { | 1478 void SkImageInfo::validate() const { |
1478 SkASSERT(fWidth >= 0); | 1479 SkASSERT(fWidth >= 0); |
1479 SkASSERT(fHeight >= 0); | 1480 SkASSERT(fHeight >= 0); |
1480 SkASSERT(SkColorTypeIsValid(fColorType)); | 1481 SkASSERT(SkColorTypeIsValid(fColorType)); |
1481 SkASSERT(SkAlphaTypeIsValid(fAlphaType)); | 1482 SkASSERT(SkAlphaTypeIsValid(fAlphaType)); |
1482 } | 1483 } |
1483 #endif | 1484 #endif |
OLD | NEW |