skia2/third_party
Leon Scroggins III 4993b95f53 Do not create SkGifCodec if true size is not known
If there is enough data in the stream to read the reported canvas size,
but not enough to read the first image's header, we do not know the
true canvas size, since we may expand it to fit the first frame. In
that case, return nullptr from NewFromStream.

Add a test.

SkGifCodec.cpp:
Correct a comment - parse returns false if there is a fatal error.
parse() returning true does not guarantee that the size was found.
Instead of checking the width and height, check to see whether the
first frame exists and has its header defined. If not, we do not yet
know the true canvas size. Assert that the canvas size is non-zero,
which is a fatal error from parse.

SkGifImageReader.cpp:
Move the code to set the header defined before the SkGIFSizeQuery exit
condition. This allows SkGifCodec to check the first frame's header to
determine whether the size is known.

GifTest.cpp:
Add a test which truncates the file just before the image header (and
after the global header). Prior to the other changes, this would create
an SkCodec. For an image that needs its canvas size expanded, the
SkCodec would have an incorrect size.

CodecPartialTest.cpp:
randPixels.gif now needs more than half of its data to create an
SkCodec, so set a minimum for test_partial.

Change-Id: I40482f524128b2f1fe59b8f27dd64c7cbe793079
Reviewed-on: https://skia-review.googlesource.com/5701
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
2016-12-09 15:04:06 +00:00
..
angle2 GN: ANGLE build completes now on Windows 2016-10-17 16:45:39 +00:00
cpu-features GN: Android 2016-08-25 14:50:44 -07:00
dng_sdk Reland "Build SkRawCodec in GN" 2016-10-31 09:02:57 -07:00
etc1 Revert of Depend on ETC1 via DEPS instead of a direct third_party checkin. (patchset #1 id:1 of https://codereview.chromium.org/1296253003/ ) 2015-08-17 11:15:00 -07:00
expat Allow most third_party targets to use system libraries if asked. 2016-11-01 16:17:38 +00:00
freetype/include/freetype-android Roll third_party/externals/freetype 4d3f7ca8cedb..ffd8f622360 2016-12-08 15:22:37 +00:00
freetype2 Allow most third_party targets to use system libraries if asked. 2016-11-01 16:17:38 +00:00
gif Do not create SkGifCodec if true size is not known 2016-12-09 15:04:06 +00:00
harfbuzz GN: build sfntly, icu, harfbuzz 2016-08-03 15:08:04 -07:00
icu Allow most third_party targets to use system libraries if asked. 2016-11-01 16:17:38 +00:00
jsoncpp GN: dm 2016-07-27 13:55:27 -07:00
ktx third_party/ktx: put WriteBitmapToKTX back 2016-12-01 17:45:12 +00:00
libjpeg-turbo Apple's Clang can't assemble jsimd_arm_... 2016-11-14 15:03:46 +00:00
libmicrohttpd GN/Win: everything links on my machine. 2016-10-12 16:39:42 +00:00
libpng GN: turn on libpng SSE2 filters 2016-11-07 22:36:42 +00:00
libsdl Viewer on Mac. 2016-10-20 14:57:49 +00:00
libwebp Allow most third_party targets to use system libraries if asked. 2016-11-01 16:17:38 +00:00
lua GN: build Lua tools when skia_use_lua. 2016-11-11 17:34:36 +00:00
native_app_glue Add Android viewer to GN 2016-10-21 15:19:32 +00:00
piex Reland "Build SkRawCodec in GN" 2016-10-31 09:02:57 -07:00
sfntly Compile the skia library for windows using gn. 2016-09-16 13:29:57 -07:00
yasm Make yasm-android executable 2016-07-26 13:46:16 -07:00
zlib Allow most third_party targets to use system libraries if asked. 2016-11-01 16:17:38 +00:00
BUILD.gn GN: Android 2016-08-25 14:50:44 -07:00
README BUG=skia:5602 2016-09-02 11:19:34 -07:00
third_party.gni Allow most third_party targets to use system libraries if asked. 2016-11-01 16:17:38 +00:00

The third_party directory contains a set of dependencies from outside sources
that are needed to build various components and tools within Skia.  

Some of these dependencies reside within the Skia repo, while others are pulled 
from other repositories and placed in the third_party/externals directory
during build. These external dependencies are defined in a DEPS file.

Products in third_party are subject to their own respective license terms.  The
license for each project should be included in the source itself via a license
header or file.  If the source itself does not include a license header or file,
create a README that refers to reliable documentation of the project's license
terms on the web.