diff options
author | 2015-11-23 08:14:40 -0800 | |
---|---|---|
committer | 2015-11-23 08:14:40 -0800 | |
commit | cf98fa93116cf5efcc42d48c22fb4bd76896acdc (patch) | |
tree | dc2eef08cc61ea8b73d4650c0633b215b5aab37f /src/images | |
parent | 93c69fff535075e86596a2b224f52f454b060be3 (diff) |
Add SkPngChunkReader.
This class allows a client of SkCodec to read chunks in the data
stream that are not recognized by libpng. This is used by Android
to specify ninepatch data.
Taken from SkImageDecoder::Peeker. Modify the name of the class
and its method to be more specific to their use. Make
SkImageDecoder::Peeker a subclass of the new class, to help stage
the change in Android.
Add a test to verify that it works.
BUG=skia:4574
BUG=skia:3257
Committed: https://skia.googlesource.com/skia/+/3389e00136188800b98ca69488c0418c374fd78b
Review URL: https://codereview.chromium.org/1040453002
Diffstat (limited to 'src/images')
-rw-r--r-- | src/images/SkImageDecoder.cpp | 2 | ||||
-rw-r--r-- | src/images/SkImageDecoder_libpng.cpp | 7 |
2 files changed, 4 insertions, 5 deletions
diff --git a/src/images/SkImageDecoder.cpp b/src/images/SkImageDecoder.cpp index d2ad553769..221faf74d5 100644 --- a/src/images/SkImageDecoder.cpp +++ b/src/images/SkImageDecoder.cpp @@ -83,7 +83,7 @@ const char* SkImageDecoder::GetFormatName(Format format) { return "Unknown Format"; } -SkImageDecoder::Peeker* SkImageDecoder::setPeeker(Peeker* peeker) { +SkPngChunkReader* SkImageDecoder::setPeeker(SkPngChunkReader* peeker) { SkRefCnt_SafeAssign(fPeeker, peeker); return peeker; } diff --git a/src/images/SkImageDecoder_libpng.cpp b/src/images/SkImageDecoder_libpng.cpp index 47963b5543..a03ed10453 100644 --- a/src/images/SkImageDecoder_libpng.cpp +++ b/src/images/SkImageDecoder_libpng.cpp @@ -124,10 +124,9 @@ static void sk_read_fn(png_structp png_ptr, png_bytep data, png_size_t length) { #ifdef PNG_READ_UNKNOWN_CHUNKS_SUPPORTED static int sk_read_user_chunk(png_structp png_ptr, png_unknown_chunkp chunk) { - SkImageDecoder::Peeker* peeker = - (SkImageDecoder::Peeker*)png_get_user_chunk_ptr(png_ptr); - // peek() returning true means continue decoding - return peeker->peek((const char*)chunk->name, chunk->data, chunk->size) ? + SkPngChunkReader* peeker = (SkPngChunkReader*)png_get_user_chunk_ptr(png_ptr); + // readChunk() returning true means continue decoding + return peeker->readChunk((const char*)chunk->name, chunk->data, chunk->size) ? 1 : -1; } #endif |