Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(91)

Side by Side Diff: tests/CodexTest.cpp

Issue 1553303003: Store ninepatch chunks in the png header in CodexTest (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Response to comments Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/codec/SkCodec_libpng.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "Resources.h" 8 #include "Resources.h"
9 #include "SkAndroidCodec.h" 9 #include "SkAndroidCodec.h"
10 #include "SkBitmap.h" 10 #include "SkBitmap.h"
(...skipping 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 735
736 SkDynamicMemoryWStream wStream; 736 SkDynamicMemoryWStream wStream;
737 png_set_write_fn(png, (void*) (&wStream), codex_test_write_fn, nullptr); 737 png_set_write_fn(png, (void*) (&wStream), codex_test_write_fn, nullptr);
738 738
739 png_set_IHDR(png, info, (png_uint_32)w, (png_uint_32)h, 8, 739 png_set_IHDR(png, info, (png_uint_32)w, (png_uint_32)h, 8,
740 PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE, 740 PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE,
741 PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); 741 PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
742 742
743 // Create some chunks that match the Android framework's use. 743 // Create some chunks that match the Android framework's use.
744 static png_unknown_chunk gUnknowns[] = { 744 static png_unknown_chunk gUnknowns[] = {
745 { "npOl", (png_byte*)"outline", sizeof("outline"), PNG_HAVE_PLTE }, 745 { "npOl", (png_byte*)"outline", sizeof("outline"), PNG_HAVE_IHDR },
746 { "npLb", (png_byte*)"layoutBounds", sizeof("layoutBounds"), PNG_HAVE_PL TE }, 746 { "npLb", (png_byte*)"layoutBounds", sizeof("layoutBounds"), PNG_HAVE_IH DR },
747 { "npTc", (png_byte*)"ninePatchData", sizeof("ninePatchData"), PNG_HAVE_ PLTE }, 747 { "npTc", (png_byte*)"ninePatchData", sizeof("ninePatchData"), PNG_HAVE_ IHDR },
748 }; 748 };
749 749
750 png_set_keep_unknown_chunks(png, PNG_HANDLE_CHUNK_ALWAYS, (png_byte*)"npOl\0 npLb\0npTc\0", 3); 750 png_set_keep_unknown_chunks(png, PNG_HANDLE_CHUNK_ALWAYS, (png_byte*)"npOl\0 npLb\0npTc\0", 3);
751 png_set_unknown_chunks(png, info, gUnknowns, SK_ARRAY_COUNT(gUnknowns)); 751 png_set_unknown_chunks(png, info, gUnknowns, SK_ARRAY_COUNT(gUnknowns));
752 #if PNG_LIBPNG_VER < 10600 752 #if PNG_LIBPNG_VER < 10600
753 /* Deal with unknown chunk location bug in 1.5.x and earlier */ 753 /* Deal with unknown chunk location bug in 1.5.x and earlier */
754 png_set_unknown_chunk_location(png, info, 0, PNG_HAVE_PLTE); 754 png_set_unknown_chunk_location(png, info, 0, PNG_HAVE_IHDR);
755 png_set_unknown_chunk_location(png, info, 1, PNG_HAVE_PLTE); 755 png_set_unknown_chunk_location(png, info, 1, PNG_HAVE_IHDR);
756 #endif 756 #endif
757 757
758 png_write_info(png, info); 758 png_write_info(png, info);
759 759
760 for (int j = 0; j < h; j++) { 760 for (int j = 0; j < h; j++) {
761 png_bytep row = (png_bytep)(bm.getAddr(0, j)); 761 png_bytep row = (png_bytep)(bm.getAddr(0, j));
762 png_write_rows(png, &row, 1); 762 png_write_rows(png, &row, 1);
763 } 763 }
764 png_write_end(png, info); 764 png_write_end(png, info);
765 png_destroy_write_struct(&png, &info); 765 png_destroy_write_struct(&png, &info);
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 // Now test an image which is too big. Any image with a larger header (i.e. 947 // Now test an image which is too big. Any image with a larger header (i.e.
948 // has bigger width/height) is also too big. 948 // has bigger width/height) is also too big.
949 const unsigned char tooBigWbmp[] = { 0x00, 0x00, // Header 949 const unsigned char tooBigWbmp[] = { 0x00, 0x00, // Header
950 0x84, 0x80, 0x00, // W: 65536 950 0x84, 0x80, 0x00, // W: 65536
951 0x84, 0x80, 0x00 }; // H: 65536 951 0x84, 0x80, 0x00 }; // H: 65536
952 stream.reset(new SkMemoryStream(tooBigWbmp, sizeof(tooBigWbmp), false)); 952 stream.reset(new SkMemoryStream(tooBigWbmp, sizeof(tooBigWbmp), false));
953 codec.reset(SkCodec::NewFromStream(stream.detach())); 953 codec.reset(SkCodec::NewFromStream(stream.detach()));
954 954
955 REPORTER_ASSERT(r, !codec); 955 REPORTER_ASSERT(r, !codec);
956 } 956 }
OLDNEW
« no previous file with comments | « src/codec/SkCodec_libpng.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698