Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 <functional> | 8 #include <functional> |
| 9 #include <initializer_list> | 9 #include <initializer_list> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 920 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 931 otherContextInfo.grContext(), buffer, budgeted)); | 931 otherContextInfo.grContext(), buffer, budgeted)); |
| 932 REPORTER_ASSERT(reporter, !newImage2); | 932 REPORTER_ASSERT(reporter, !newImage2); |
| 933 testContext->makeCurrent(); | 933 testContext->makeCurrent(); |
| 934 } | 934 } |
| 935 } | 935 } |
| 936 sk_free(buffer); | 936 sk_free(buffer); |
| 937 } | 937 } |
| 938 } | 938 } |
| 939 } | 939 } |
| 940 #endif | 940 #endif |
| 941 | |
| 942 //////////////////////////////////////////////////////////////////////////////// /////////////////// | |
| 943 | |
| 944 static void make_all_premul(SkBitmap* bm) { | |
| 945 bm->allocPixels(SkImageInfo::MakeN32(256, 256, kPremul_SkAlphaType)); | |
| 946 for (int a = 0; a < 256; ++a) { | |
| 947 for (int r = 0; r < 256; ++r) { | |
| 948 // make all valid premul combinations | |
| 949 int c = SkTMin(a, r); | |
| 950 *bm->getAddr32(a, r) = SkPackARGB32(a, c, c, c); | |
| 951 } | |
| 952 } | |
| 953 } | |
| 954 | |
| 955 static bool equal(const SkBitmap& a, const SkBitmap& b) { | |
| 956 SkASSERT(a.width() == b.width()); | |
| 957 SkASSERT(a.height() == b.height()); | |
| 958 for (int y = 0; y < a.height(); ++y) { | |
| 959 if (memcmp(a.getAddr32(0, y), b.getAddr32(0, y), a.width() * sizeof(SkPM Color))) { | |
|
mtklein
2016/07/27 01:40:30
0 != ?
| |
| 960 return false; | |
| 961 } | |
| 962 } | |
| 963 return true; | |
| 964 } | |
| 965 | |
| 966 DEF_TEST(image_roundtrip_encode, reporter) { | |
| 967 SkBitmap bm0; | |
| 968 make_all_premul(&bm0); | |
| 969 | |
| 970 auto img0 = SkImage::MakeFromBitmap(bm0); | |
| 971 sk_sp<SkData> data(img0->encode(SkImageEncoder::kPNG_Type, 100)); | |
| 972 auto img1 = SkImage::MakeFromEncoded(data); | |
| 973 | |
| 974 SkBitmap bm1; | |
| 975 bm1.allocPixels(SkImageInfo::MakeN32(256, 256, kPremul_SkAlphaType)); | |
| 976 img1->readPixels(bm1.info(), bm1.getPixels(), bm1.rowBytes(), 0, 0); | |
| 977 | |
| 978 REPORTER_ASSERT(reporter, equal(bm0, bm1)); | |
| 979 } | |
| 980 | |
| 981 DEF_TEST(image_roundtrip_premul, reporter) { | |
| 982 SkBitmap bm0; | |
| 983 make_all_premul(&bm0); | |
| 984 | |
| 985 SkBitmap bm1; | |
| 986 bm1.allocPixels(SkImageInfo::MakeN32(256, 256, kUnpremul_SkAlphaType)); | |
| 987 bm0.readPixels(bm1.info(), bm1.getPixels(), bm1.rowBytes(), 0, 0); | |
| 988 | |
| 989 SkBitmap bm2; | |
| 990 bm2.allocPixels(SkImageInfo::MakeN32(256, 256, kPremul_SkAlphaType)); | |
| 991 bm1.readPixels(bm2.info(), bm2.getPixels(), bm2.rowBytes(), 0, 0); | |
| 992 | |
| 993 REPORTER_ASSERT(reporter, equal(bm0, bm2)); | |
| 994 } | |
| OLD | NEW |