aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/images
Commit message (Collapse)AuthorAge
* move SkImage::ColorType into SkColorTypeGravatar reed@google.com2013-11-01
| | | | | | | | | | | | | | | | | | objective -- move clients over to SkImage tasks - use SkImageInfo instead of SkBitmap::Config - add support for colortables to SkImage - add drawImage to SkCanvas - return SkImage from readPixels This CL works towards the first task R=robertphillips@google.com Review URL: https://codereview.chromium.org/54363008 git-svn-id: http://skia.googlecode.com/svn/trunk@12077 2bbb7eff-a529-9590-31e7-b0007b416f81
* Adding size parameter to read array functionsGravatar commit-bot@chromium.org2013-10-31
| | | | | | | | | | | | | | | | | | | In some cases, the allocated array into which the data will be read is using getArrayCount() to allocate itself, which should be safe, but some cases use fixed length arrays or compute the array size before reading, which could overflow if the stream is compromised. To prevent that from happening, I added a check that will verify that the number of bytes to read will not exceed the capacity of the input buffer argument passed to all the read...Array() functions. I chose to use the byte array for this initial version, so that "size" represents the same value across all read...Array() functions, but I could also use the element count, if it is preferred. Note : readPointArray and writePointArray are unused, so I could also remove them BUG= R=reed@google.com, mtklein@google.com, senorblanco@chromium.org Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/37803002 git-svn-id: http://skia.googlecode.com/svn/trunk@12058 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, ↵Gravatar reed@google.com2013-10-31
| | | | | | | | | | | | since it triggers a warning"" This reverts commit 1e787c38fa71f2a21fd728f1b1d620b9b09b0d3d. BUG= Review URL: https://codereview.chromium.org/54603004 git-svn-id: http://skia.googlecode.com/svn/trunk@12057 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it ↵Gravatar reed@google.com2013-10-31
| | | | | | | | triggers a warning" This reverts commit 1d22c4aaf9d8f053f25194a1ed74b137bfb19497. git-svn-id: http://skia.googlecode.com/svn/trunk@12056 2bbb7eff-a529-9590-31e7-b0007b416f81
* add SK_ATTR_DEPRECATED -- will need to disable for chrome, since it triggers ↵Gravatar reed@google.com2013-10-31
| | | | | | | | | | | a warning BUG= R=robertphillips@google.com, senorblanco@chromium.org, vandebo@chromium.org Review URL: https://codereview.chromium.org/51033004 git-svn-id: http://skia.googlecode.com/svn/trunk@12055 2bbb7eff-a529-9590-31e7-b0007b416f81
* Image decoder fixes (mostly) around A8.Gravatar scroggo@google.com2013-10-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Opaquness: When decoding Gray to A8 in libpng, set reallyHasAlpha to true and add a comment why we do not check for the real answer. Add comments in jpeg decoder explaining why A8 is not opaque. Fix a bug where an A8 subset is considered to be opaque. Other fixes: In SkJPEGImageDecoder, only allocate as much memory as needed for each source row, based on the input config. Also pull out common code into a static function. When performing the check for requiring unpremultiplied colors, allow A8 to succeed, since that setting should have no effect on A8. Add the check for requiring unpremultiplied colors to subset decoding. Fix a bug where attempting to sample gray to A8 does not sample. R=reed@google.com Review URL: https://codereview.chromium.org/26210007 git-svn-id: http://skia.googlecode.com/svn/trunk@11897 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Revert "cache SkImage::Info calculation in lazypixelref""Gravatar reed@google.com2013-10-21
| | | | | | | | | | | | This reverts commit 81eba32ab10f9210c742938819cf1218be5611c9. ImageDecoder is changed to allow info to be NULL, since it is an output-only parameter. R=scroggo@google.com Review URL: https://codereview.chromium.org/33573002 git-svn-id: http://skia.googlecode.com/svn/trunk@11896 2bbb7eff-a529-9590-31e7-b0007b416f81
* store SkAlphaType inside SkBitmap, on road to support unpremulGravatar reed@google.com2013-10-21
| | | | | | | | | BUG= R=bsalomon@google.com, scroggo@google.com Review URL: https://codereview.chromium.org/25275004 git-svn-id: http://skia.googlecode.com/svn/trunk@11877 2bbb7eff-a529-9590-31e7-b0007b416f81
* Second wave of Win64 warning cleanupGravatar robertphillips@google.com2013-10-15
| | | | | | | | https://codereview.chromium.org/27343002/ git-svn-id: http://skia.googlecode.com/svn/trunk@11778 2bbb7eff-a529-9590-31e7-b0007b416f81
* Runtime configuration setting for suppressing JPEG decoder errors.Gravatar halcanary@google.com2013-10-14
| | | | | | | | | | | | | | | | | | Add new runtime config variable, images.jpeg.suppressDecoderErrors which defaults to false in Debug and true otherwise. When Jpeg errors are suppressed and an error happens, SkJPEGImageDecoder::onDecode() will return silently false (Consequently, so will SkImageDecoder's DecodeFile() and DecodeMemory() functions). Also, the test_image_decoder program now respects runtime configuration settings. BUG=skia:1680 R=scroggo@google.com Review URL: https://codereview.chromium.org/27230002 git-svn-id: http://skia.googlecode.com/svn/trunk@11763 2bbb7eff-a529-9590-31e7-b0007b416f81
* Simplify code for configuring suppression of ImageDecoder warningsGravatar halcanary@google.com2013-10-14
| | | | | | | | | | | | | | | | | | | For images.png.suppressDecoderWarnings and images.jpeg.suppressDecoderWarnings, the default behavior is now: Debug - DON'T suppress Developer Release - suppress Release - suppress This behavior can be changed in Debug and in Developer through the SkRTConf mechanism. BUG=skia:1680 R=caryclark@google.com Review URL: https://codereview.chromium.org/26863003 git-svn-id: http://skia.googlecode.com/svn/trunk@11749 2bbb7eff-a529-9590-31e7-b0007b416f81
* GIF decode: optional error messages and fault tolerance.Gravatar halcanary@google.com2013-10-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add new runtime configuration variable, images.gif.suppressDecoderWarnings, which suppresses warning and errors from the GIF library. It defaults to "true", which is current behavior. (This setting can be changed by setting the environment variable skia_images_gif_suppressDecoderWarnings="false".) Some conditions which were errors before are now warnings: - If the image width or height is greater than the GIF screen width or height (respectively) we expand the screen to hold the image. - If the offset of the image inside the screen would place the image outside of the screen, we shift the image to fix this. - If the image lacks a color table, we create a default color table. - If the image is truncated, then the rest of the image is filled with the fill color. In all four cases, if images.gif.suppressDecoderWarnings is set to false, then a warning message is printed via SkDebugf. In the event of another kind of error, SkGIFImageDecoder::onDecode() will still return false. But with this change, if images.gif.suppressDecoderWarnings is set to false, a description of the error is printed via SkDebugf. Also, added a new unit test GifTest, which tests the deconing of both good GIf files and corrupted files that should now work with this change. This unit test is disabled on Win32, iOS, and Mac. BUG=skia:1689 R=scroggo@google.com Review URL: https://codereview.chromium.org/26743002 git-svn-id: http://skia.googlecode.com/svn/trunk@11734 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Revert "change SkColorTable to be immutable""Gravatar reed@google.com2013-10-10
| | | | | | | | | | | | This reverts commit b8162cb840f4cb6002ef68d5ac775c6a122c52a9. Fixed was call-sites in benches that used the (now gone) setIsOpaque api. R=scroggo@google.com Review URL: https://codereview.chromium.org/26572006 git-svn-id: http://skia.googlecode.com/svn/trunk@11695 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "change SkColorTable to be immutable"Gravatar reed@google.com2013-10-09
| | | | | | | | | | This reverts commit 1c0ff422868b3badf5ffe0790a5d051d1896e2f7. BUG= Review URL: https://codereview.chromium.org/26709002 git-svn-id: http://skia.googlecode.com/svn/trunk@11677 2bbb7eff-a529-9590-31e7-b0007b416f81
* change SkColorTable to be immutableGravatar reed@google.com2013-10-09
| | | | | | | | | BUG= R=scroggo@google.com Review URL: https://codereview.chromium.org/25353002 git-svn-id: http://skia.googlecode.com/svn/trunk@11676 2bbb7eff-a529-9590-31e7-b0007b416f81
* Allow sampling GIF images during decode.Gravatar commit-bot@chromium.org2013-10-08
| | | | | | | | | | | | | | | | | | | | | | SkScaledBitmapSampler: Add a mode for sampling rows out of order, used by GIF decoder for interlaced images. Add a getter for the X sampling rate. SkImageDecoder_libgif: Respect the sampleSize set on SkImageDecoder. skimage_main: Provide an option to set a sample size. BUG=https://b.corp.google.com/issue?id=8999690 R=reed@google.com, djsollen@google.com, halcanary@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/25354004 git-svn-id: http://skia.googlecode.com/svn/trunk@11659 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix SkScalar conversion warning error.Gravatar halcanary@google.com2013-10-04
| | | | | | | | | | This was causing probems on the Win build. R=caryclark@google.com Review URL: https://codereview.chromium.org/26011002 git-svn-id: http://skia.googlecode.com/svn/trunk@11604 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make image decoding more fault resistant, less verbose.Gravatar halcanary@google.com2013-10-04
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change address what happens when a jpeg is partially downloaded before failing. Many browsers will render it anyway: we want Skia to do the same. The JpegTest takes a perfectly cromulent jpeg file and only passes into the ImageDecoder the first half of the image. We then verify that the image decoder returns a valid bitmap of the correct dimensions. We also fixed some png library errors, including issue 1691. Also, suppressed the majority of warnings from using libpng and libjpeg. By default, most warnings are *not* suppressed in debug mode. If you have a debug binary and wish to suppress warnings, set the following environment variables to true skia_images_png_suppressDecoderWarnings skia_images_jpeg_suppressDecoderWarnings or from within a program that links to Skia: #if defined(SK_DEBUG) #include "SkRTConf.h" SK_CONF_SET("images.jpeg.suppressDecoderWarnings", true); SK_CONF_SET("images.png.suppressDecoderWarnings", true); #endif I tested this, before (control) and after these changes (test), on 364,295 skps from the cluster telemetry. - number of errors+warnings in control = 2804 - number of errors+warnings fixed = 2283 - number of PNG verbosity fixed = 2152 - number of PNG error fixed = 4 - number of PNG segfault fixed = 3 - number of PNG errors changed to warnings = 62 - number of JPG verbosity fixed = 26 - number of JPG error fixed = 91 Not all errors and warning have been fixed. These numbers were generated using the find_bad_images_in_skps.py program. This program may be useful going forward for testing image-decoding libraries on skp files from the cluster telemetry. find_bad_images_in_skps.py depends on the test_image_decoder program, which simply executes the SkImageDecoder::DecodeFile function and uses its exit status to report success or failure. BUG=skia:1649 BUG=skia:1691 BUG=skia:1680 R=scroggo@google.com Review URL: https://codereview.chromium.org/24449003 git-svn-id: http://skia.googlecode.com/svn/trunk@11597 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fixes for decoding to A8.Gravatar commit-bot@chromium.org2013-10-03
| | | | | | | | | | | | | | | | | | | | | | | | src/images/SkImageDecoder_libpng.cpp: A8 images are not opaque, so do not set the opaque flag. This fixes a bug where copyTo does not work as expected (when copying an A8 decoded image to ARGB_8888), leading to a bitmap hash that does not represent the image correctly (in skimage). tools/skimage_main.cpp: In write_bitmap, which is creating the image for visual comparison, copy A8 to 8888, since A8 cannot be encoded. In the section that tests reencoding, do not test reencoding A8, which is known to not work. R=mtklein@google.com, djsollen@google.com Author: scroggo@google.com Review URL: https://codereview.chromium.org/25726004 git-svn-id: http://skia.googlecode.com/svn/trunk@11589 2bbb7eff-a529-9590-31e7-b0007b416f81
* Do not convert non gray PNG to A8.Gravatar scroggo@google.com2013-10-02
| | | | | | | | | | | | If the user requested A8, but the source is not gray, switch to ARGB8888. BUG=https://b.corp.google.com/issue?id=9189955 R=reed@google.com Review URL: https://codereview.chromium.org/24882002 git-svn-id: http://skia.googlecode.com/svn/trunk@11573 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix build.Gravatar scroggo@google.com2013-10-01
| | | | | | | | Predeclare a function. Unreviewed. git-svn-id: http://skia.googlecode.com/svn/trunk@11559 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add an option on SkImageDecoder to skip writing 0s.Gravatar scroggo@google.com2013-10-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Only implemented for PNG. Add a getter and setter, and sets the default to false in the constructor. Also copies the setting in copyFieldsToOther. Fix an indpendent bug where fDitherImage was not being copied in copyFieldsToOther. In SkScaledBitmapSampler::begin, consolidate the settings passed in by passing a const reference to the decoder. The decoder can be referenced for its settings of dither, unpremultiplied, and now skipping writing zeroes. Update callers to use the new API. In png decoder, rather than passing around a pointer to an initial read of getDitherImage, and potentially changing it, look at the field on the decoder itself, and modify it directly. This is a change in behavior - now if that same decoder is used to decode a different image, the dither setting has changed. I think this is okay because A) the typical use case is to use a new decoder for each decode, B) we do not make any promises that a decode does not change the decoder and C) it makes the code in SkScaledBitmapSampler much cleaner. In SkScaledBitmapScampler, add new row procs for skipping zeroes. Now that choosing the row proc has five dimensions (src config, dst config, dither, skip writing zeroes, unpremultiplied), use a new method: each src/dst combination has a function for choosing the right proc depending on the decoder. SkScaledBitmapScampler::RowProc is now public for convenience. Remove Sample_Gray_D8888_Unpremul, which is effectively no different from Sample_Gray_D8888. In cases where unpremultiplied was trivial, such as 565 and when sampling from gray, decoding may now succeed. Add a benchmark (currently disabled) for comparing the speed of skipping writing zeroes versus not skipping. For this particular image, which is mostly transparent pixels, normal decoding took about 3.6 milliseconds, while skipping zeroes in the decode took only about 2.5 milliseconds (this is on a Nexus 4). Presumably it would be slower on an image with a small amount of transparency, but there will be no slowdown for an image which reports that it has no transparency. In SkImageRef_ashmem, always skip writing zeroes, since ashmem memory is guaranteed to be initialized to 0. Add a flag to skip writing zeroes in skimage. Add a regression test for choosing the rowproc to ensure I did not change any behavior accidentally. BUG=skia:1661 R=reed@google.com Review URL: https://codereview.chromium.org/24269006 git-svn-id: http://skia.googlecode.com/svn/trunk@11558 2bbb7eff-a529-9590-31e7-b0007b416f81
* Change SkImageDecoders to take an SkStreamRewindable.Gravatar scroggo@google.com2013-09-25
| | | | | | | | | | | | | | | | | | | | Only affects factories, static functions that will use the factories, and subset decoding, which all require rewinding. The decoders themselves continue to take an SkStream. This is merely documentation stating which functions will possibly rewind the passed in SkStream. This is part of the general change to coordinate SkStreams with Android's streams, which don't necessarily support rewinding in all cases. Update callers to use SkStreamRewindable. BUG=skia:1572 R=bungeman@google.com, reed@google.com Review URL: https://codereview.chromium.org/23477009 git-svn-id: http://skia.googlecode.com/svn/trunk@11460 2bbb7eff-a529-9590-31e7-b0007b416f81
* Print a better error message.Gravatar scroggo@google.com2013-09-25
| | | | | | | | | | Use format_message to print the proper error message in JPEG decoder. R=mtklein@google.com Review URL: https://codereview.chromium.org/24461002 git-svn-id: http://skia.googlecode.com/svn/trunk@11459 2bbb7eff-a529-9590-31e7-b0007b416f81
* Use the default resync_to_restart in jpeg.Gravatar scroggo@google.com2013-09-25
| | | | | | | | | | | Our version requires rewinding the stream, which is not always supported. Instead, depend on jpeg's default version. R=djsollen@google.com Review URL: https://codereview.chromium.org/23464068 git-svn-id: http://skia.googlecode.com/svn/trunk@11458 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove dead code from libwebp image decoderGravatar commit-bot@chromium.org2013-09-06
| | | | | | | | | | R=scroggo@google.com, markkilgard@gmail.com Author: bsalomon@google.com Review URL: https://chromiumcodereview.appspot.com/23480043 git-svn-id: http://skia.googlecode.com/svn/trunk@11141 2bbb7eff-a529-9590-31e7-b0007b416f81
* Rewrite SkTRegistry to take any trivially-copyable type.Gravatar mtklein@google.com2013-09-04
| | | | | | | | | | | | | | Obviously these are all currently function pointers of type T(*)(P) for various T and P. In bench refactoring, I'm trying to register a function pointer of type T(*)(), which can't be done as is (passing P=void doesn't work). This also lets us register things like primitives, which is conceivable useful. BUG= R=reed@google.com, scroggo@google.com Review URL: https://codereview.chromium.org/23453031 git-svn-id: http://skia.googlecode.com/svn/trunk@11082 2bbb7eff-a529-9590-31e7-b0007b416f81
* Handle SkStream::rewind properly.Gravatar scroggo@google.com2013-08-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | include/core/SkStream.h: Update documentation to state that rewinding a stream at the beginning should return true. This is important because our decoders fail if rewind returns false, assuming that the stream is not at the beginning. src/images/SkImageDecoder_libpng.cpp: If rewind fails, call png_error. src/images/SkImageDecoder_libwebp.cpp: If rewind fails, report an error and return false. src/images/SkImageRef.cpp: If rewind fails report an error and return false. FIXME: Need to handle flattening properly. Should I perhaps move writeStream into SkOrderedWriteBuffer? src/images/SkJpegUtility.cpp: Report a jpeg error on failure to rewind. BUG=https://b.corp.google.com/issue?id=8432093 R=bungeman@google.com, djsollen@google.com, reed@google.com Review URL: https://codereview.chromium.org/22861028 git-svn-id: http://skia.googlecode.com/svn/trunk@10977 2bbb7eff-a529-9590-31e7-b0007b416f81
* Only destroy huffman if build succeeded.Gravatar scroggo@google.com2013-08-27
| | | | | | | | | | | | | | The earlier code assumed that if jpeg_create_huffman_index succeeded but jpeg_build_huffman_index failed that the index would still need to be destroyed. This is not the case. Only call jpeg_destroy_huffman_index if both succeeded. BUG=http://b.corp.google.com/issue?id=10263847 Review URL: https://codereview.chromium.org/22859042 git-svn-id: http://skia.googlecode.com/svn/trunk@10954 2bbb7eff-a529-9590-31e7-b0007b416f81
* My clang now doesn't complain about !"foo".Gravatar mtklein@google.com2013-08-22
| | | | | | | | | BUG= R=robertphillips@google.com Review URL: https://codereview.chromium.org/22875037 git-svn-id: http://skia.googlecode.com/svn/trunk@10874 2bbb7eff-a529-9590-31e7-b0007b416f81
* Avoid getLength in ico decoder.Gravatar scroggo@google.com2013-08-21
| | | | | | | | | | | | | | Only call getLength() if hasLength() returned true. Otherwise, copy the stream into an SkDynamicMemoryWStream and copy it into alloc'ed space. Share common code between bmp and ico. BUG=https://b.corp.google.com/issue?id=8432093 R=djsollen@google.com Review URL: https://codereview.chromium.org/23330002 git-svn-id: http://skia.googlecode.com/svn/trunk@10850 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make BMP decoder not depend on call to getLength.Gravatar scroggo@google.com2013-08-21
| | | | | | | | | | | | If the decoder does not have a length, use an SkDynamicMemoryStream to copy it to contiguous memory, to be passed to BmpDecoderHelper. BUG=https://b.corp.google.com/issue?id=8432093 R=djsollen@google.com Review URL: https://codereview.chromium.org/22877020 git-svn-id: http://skia.googlecode.com/svn/trunk@10849 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove dependency on getLength from webp decoder.Gravatar scroggo@google.com2013-08-21
| | | | | | | | | | | | | | | | | In webp_parse_header, continue reading until end of stream is reached, or we have read WEBP_VP8_HEADER_SIZE bytes. Do not check to see if the stream was too short, since it may not have a way to report its length, and WEBP_VP8_HEADER_SIZE is padded slightly. Instead, depend on WebPGetFeatures to report that the stream did not have enough data. In webp_idecode, only check length if it is available. BUG=https://b.corp.google.com/issue?id=8432093 R=djsollen@google.com, vikasa@google.com Review URL: https://codereview.chromium.org/22841005 git-svn-id: http://skia.googlecode.com/svn/trunk@10848 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reland "Make WebP decoding independent of stream length."Gravatar scroggo@google.com2013-08-09
| | | | | | | | | | | | | This reverts commit 1de924955b103c4f5dc9c46a06527d6a37e6cb70. When reading the stream, only read as much as will fit in the allocated buffer. BUG=skia:1495 Review URL: https://codereview.chromium.org/22629010 git-svn-id: http://skia.googlecode.com/svn/trunk@10665 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reverting r10651: Make WebP decoding independent of stream length.Gravatar jvanverth@google.com2013-08-09
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@10656 2bbb7eff-a529-9590-31e7-b0007b416f81
* Make WebP decoding independent of stream length.Gravatar djsollen@google.com2013-08-09
| | | | | | | | | | | | | There's a case in Android, when the SkStream passed to WebP decoder may have incorrect length (stream->getLength()). This is observed, if the App decodes an image (size > 80KB) using: 'ParcelFileDescriptor --> BitmapFactory.decodeStream()'. This CL updates the WebP incremental decoding loop to not rely on stream->getLength(). R=scroggo@google.com, vikasa@google.com Review URL: https://codereview.chromium.org/22672003 git-svn-id: http://skia.googlecode.com/svn/trunk@10651 2bbb7eff-a529-9590-31e7-b0007b416f81
* Beginning work to refactor jpeg tile decoding.Gravatar scroggo@google.com2013-08-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Keep common code together, so we can fix bugs in tile and normal decode simultaneously. Convert if-then chains to switch statements for readability. Add getBitmapConfig, common to both normal and tile decode, which ensures that they behave the same. getBitmapConfig uses the code originally in onDecode, so subsetting grayscale into A8 now works. In getBitmapConfig, handle JCS_YCCK properly. Fix a bug where requesting A8 from a JCS_CMYK image would result in a total failure to decode, since we would change out_color_space to an invalid choice. Factor common code for applying dither and changing the out_color_space into apply_dither_mode (final name TBD). Skips CMYK like normal decoding did before. BUG=skia:1472 BUG=https://b.corp.google.com/issue?id=9466275 BUG=https://b.corp.google.com/issue?id=9189955 R=mtklein@google.com Review URL: https://codereview.chromium.org/22290002 git-svn-id: http://skia.googlecode.com/svn/trunk@10629 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix failure exits from JPEG onBuildTileIndex.Gravatar scroggo@google.com2013-08-07
| | | | | | | | | | | | | | | | | | | | | The setjmp exited without deleting the SkJPEGImageIndex, and another exit condition deleted the huffman index even though it had not been created yet. Create member functions on SkJPEGImageIndex to make the jpeg calls so it can keep track of what has been created, and avoid destroying anything else. Remove unnecessary lines to set values to their default values. Move all SkJPEGImageIndex code entirely inside #ifdef ANDROID blocks, since no piece of it is used except by ANDROID only code. BUG=skia:1471 R=djsollen@google.com, mtklein@google.com Review URL: https://codereview.chromium.org/21891007 git-svn-id: http://skia.googlecode.com/svn/trunk@10628 2bbb7eff-a529-9590-31e7-b0007b416f81
* Support decoding subsets from JPG on Android.Gravatar scroggo@google.com2013-08-07
| | | | | | | | | | | | | | Previously we only supported it for the framework. Making this change allows us to test subset decoding in skimage, to make sure we don't break it. Will require rebaselining android skimage results. R=djsollen@google.com Review URL: https://codereview.chromium.org/21612003 git-svn-id: http://skia.googlecode.com/svn/trunk@10625 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fixes for JPEG subset decoding.Gravatar scroggo@google.com2013-08-01
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ensure that the stream passed to JPEG for subset decoding is neither deleted before it is no longer needed nor deleted an extra time. src/images/SkJpegUtility.h: src/images/SkJpegUtility.cpp: Always ref and unref the stream provided to skjpeg_source_mgr. Add some comments explaining how skjpeg_source_mgr's members handle ownership. Fix a warning comparing signed and unsigned numbers, converting to size_t which is more appropriate for measuring bytes. Remove dead code referring to fMemoryBase and fMemoryBaseSize, which are never used. src/images/SkImageDecoder_libjpeg.cpp: Call the new constructor for skjpeg_source_mgr, which no longer takes a boolean to determine ownership. include/images/SkBitmapRegionDecoder.h src/images/SkBitmapRegionDecoder.cpp: This small shim has been removed, since it is not needed to use Skia's image decoders. Its functionality will be folded into Android. Required for the merge to Android. R=djsollen@google.com Review URL: https://codereview.chromium.org/21561002 git-svn-id: http://skia.googlecode.com/svn/trunk@10483 2bbb7eff-a529-9590-31e7-b0007b416f81
* Upstream changes from AndroidGravatar djsollen@google.com2013-07-31
| | | | | | | | R=scroggo@google.com Review URL: https://codereview.chromium.org/21053009 git-svn-id: http://skia.googlecode.com/svn/trunk@10461 2bbb7eff-a529-9590-31e7-b0007b416f81
* all in the gypGravatar mtklein@google.com2013-07-24
| | | | | | | | | BUG= R=caryclark@google.com Review URL: https://codereview.chromium.org/19726012 git-svn-id: http://skia.googlecode.com/svn/trunk@10315 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove assert which is failing.Gravatar scroggo@google.com2013-07-18
| | | | | | Unreviewed. git-svn-id: http://skia.googlecode.com/svn/trunk@10165 2bbb7eff-a529-9590-31e7-b0007b416f81
* Support decoding Gray to A8 in PNG.Gravatar scroggo@google.com2013-07-18
| | | | | | | | | | | | | | | | | | | | | | | | | | Move the code which sets the filler and forces gray to rgb after we get the config, so we can skip them if the caller wants A8. Call set_gray_to_rgb consistently for both normal decode and subset decode. In PNG, prevent subset decodes from alternating configs, which would otherwise fail. Use SK_RESTRICT for pointers in getBitmapConfig. Ref the SkStream input to buildTileIndex, so it will not be destroyed before calling decodeSubset. Convert some fields to match Skia style. Builds on https://codereview.chromium.org/18083026/, which has not yet been checked in. R=reed@google.com Review URL: https://codereview.chromium.org/19185006 git-svn-id: http://skia.googlecode.com/svn/trunk@10162 2bbb7eff-a529-9590-31e7-b0007b416f81
* Initialize config.Gravatar scroggo@google.com2013-07-18
| | | | | | Unreviewed. git-svn-id: http://skia.googlecode.com/svn/trunk@10159 2bbb7eff-a529-9590-31e7-b0007b416f81
* A8 bitmaps from JPEG are not opaque.Gravatar scroggo@google.com2013-07-18
| | | | | | | | | | | | So do not set them to be. Depends on https://codereview.chromium.org/19185006/ R=reed@google.com Review URL: https://codereview.chromium.org/19613002 git-svn-id: http://skia.googlecode.com/svn/trunk@10158 2bbb7eff-a529-9590-31e7-b0007b416f81
* Allow decoding JPEG into A8.Gravatar scroggo@google.com2013-07-18
| | | | | | | | | | | | | | | | If the original image is grayscale, allow decoding into A8. Change the size of PrefConfigTable to allow for 8bit gray, a new source config. Add a new sampler to SkScaledBitmapSampler to 'convert' to A8. FIXME: Should there be a dithered option for gray scale? R=reed@google.com Review URL: https://codereview.chromium.org/18083026 git-svn-id: http://skia.googlecode.com/svn/trunk@10157 2bbb7eff-a529-9590-31e7-b0007b416f81
* Allow ico decoder to decode PNG sub-images.Gravatar scroggo@google.com2013-07-09
| | | | | | | | | | | | Since Windows Vista, PNG can be embedded in an ICO file. Update our decoder to support this. BUG=https://code.google.com/p/skia/issues/detail?id=1398 R=djsollen@google.com Review URL: https://codereview.chromium.org/18655007 git-svn-id: http://skia.googlecode.com/svn/trunk@9932 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove bitmap reuse from SkImageDecoder.Gravatar scroggo@google.com2013-07-09
| | | | | | | | | | | | | | | Now that Android is using an SkBitmap::Allocator to reuse bitmap memory, remove the unnecessary code to handle bitmap reuse inside the decoders themselves. Leaves in the code for bitmap reuse in decodeSubset, which still may reuse bitmaps, and cropBitmap, which is called by decodeSubset. R=djsollen@google.com Review URL: https://codereview.chromium.org/17620004 git-svn-id: http://skia.googlecode.com/svn/trunk@9931 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add a newline to the error message from JPEG.Gravatar scroggo@google.com2013-07-01
| | | | | | Review URL: https://codereview.chromium.org/18344006 git-svn-id: http://skia.googlecode.com/svn/trunk@9836 2bbb7eff-a529-9590-31e7-b0007b416f81