static void test_flatten(skiatest::Reporter* reporter, const SkImageInfo& info) { // just need a safe amount of storage, but ensure that it is 4-byte aligned. int32_t storage[(sizeof(SkImageInfo)*2) / sizeof(int32_t)]; SkBinaryWriteBuffer wb(storage, sizeof(storage)); info.flatten(wb); SkASSERT(wb.bytesWritten() < sizeof(storage)); SkReadBuffer rb(storage, wb.bytesWritten()); // pick a noisy byte pattern, so we ensure that unflatten sets all of our fields SkImageInfo info2 = SkImageInfo::Make(0xB8, 0xB8, (SkColorType) 0xB8, (SkAlphaType) 0xB8); info2.unflatten(rb); REPORTER_ASSERT(reporter, rb.offset() == wb.bytesWritten()); REPORTER_ASSERT(reporter, info == info2); }
static void test_flatten(skiatest::Reporter* reporter, const SkImageInfo& info) { // Need a safe amount of 4-byte aligned storage. Note that one of the test ICC profiles // is ~7500 bytes. const size_t storageBytes = 8000; SkAutoTMalloc<uint32_t> storage(storageBytes / sizeof(uint32_t)); SkBinaryWriteBuffer wb(storage.get(), storageBytes); info.flatten(wb); SkASSERT(wb.bytesWritten() < storageBytes); SkReadBuffer rb(storage.get(), wb.bytesWritten()); // pick a noisy byte pattern, so we ensure that unflatten sets all of our fields SkImageInfo info2 = SkImageInfo::Make(0xB8, 0xB8, (SkColorType) 0xB8, (SkAlphaType) 0xB8); info2.unflatten(rb); REPORTER_ASSERT(reporter, rb.offset() == wb.bytesWritten()); REPORTER_ASSERT(reporter, info == info2); }