aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/images
Commit message (Collapse)AuthorAge
* Revert of https://codereview.chromium.org/93703004/Gravatar commit-bot@chromium.org2013-12-18
| | | | | | | | | | | | | | | Reason for revert: Test failures R=scroggo@google.com, djsollen@google.com, reed@google.com, halcanary@google.com TBR=djsollen@google.com, halcanary@google.com, reed@google.com, scroggo@google.com NOTREECHECKS=true NOTRY=true Author: robertphillips@google.com Review URL: https://codereview.chromium.org/103753007 git-svn-id: http://skia.googlecode.com/svn/trunk@12747 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add Options to SkDecodingImageGenerator, simplify API.Gravatar halcanary@google.com2013-12-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Motivation: We want to remove redundant classes from Skia. To that end we want to remove SkImageRef and its subclasses and replace their uses with SkDiscardablePixelRef + SkDecodingImageGenerator. Since Android uses SkImageRef, we need to make sure that SkDecodingImageGenerator allows all of the settings that Android exposes in BitmapFactory.Options. To that end, we have created an Options struct for the SkDecodingImageGenerator which lets the client of the generator set sample size, dithering, and bitmap config. We have made the SkDecodingImageGenerator constructor private and replaced the SkDecodingImageGenerator::Install functions with a SkDecodingImageGenerator::Create functions (one for SkData and one for SkStream) which now take a SkDecodingImageGenerator::Options struct. Also added a ImageDecoderOptions test which loops through a list of sets of options and tries them on a set of 5 small encoded images. Also updated several users of SkDecodingImageGenerator::Install to follow new call signature - gm/factory.cpp, LazyDecodeBitmap.cpp, and PictureTest.cpp, CachedDecodingPixelRefTest.cpp. We also added a new ImprovedBitmapFactory Test which simulates the exact function that Android will need to modify to use this, installPixelRef() in BitmapFactory. R=reed@google.com, scroggo@google.com Review URL: https://codereview.chromium.org/93703004 git-svn-id: http://skia.googlecode.com/svn/trunk@12744 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fixed more fuzzer issuesGravatar commit-bot@chromium.org2013-12-17
| | | | | | | | | | | | | | | | - Added the "isAvailable" function to check how much bytes are remaining in the stream before doing potentially large mallocs. That way, we can signal a bad stream instead of crashing. - Added data validation in SkImageInfo.cpp - Added NULL pointer check in displacement - Modified the fuzzer for randomized bitmap types BUG=328934,329254 R=senorblanco@google.com, senorblanco@chromium.org, reed@google.com, sugoi@google.com Author: sugoi@chromium.org Review URL: https://codereview.chromium.org/116773002 git-svn-id: http://skia.googlecode.com/svn/trunk@12723 2bbb7eff-a529-9590-31e7-b0007b416f81
* Update all callsites to use info for pixelrefsGravatar reed@google.com2013-12-13
| | | | | | | | | | | #define SK_SUPPORT_LEGACY_PIXELREF_CONSTRUCTOR in chrome to keep old API signature (for now) BUG= R=scroggo@google.com Review URL: https://codereview.chromium.org/100723005 git-svn-id: http://skia.googlecode.com/svn/trunk@12677 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reverting r12665 & r12666 (Remove duplicate impl for SkImageInfo flattening) ↵Gravatar robertphillips@google.com2013-12-13
| | | | | | | | | | due to Chromium/Blink compilation errors https://codereview.chromium.org/112603003/ git-svn-id: http://skia.googlecode.com/svn/trunk@12667 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remvoe duplicate impl for SkImageInfo flatteningGravatar reed@google.com2013-12-13
| | | | | | | | | | | | Add onNewLockPixels This reverts commit bb8eff6a70c52b7644391cfd4f4d21bf7294a6bf. BUG= Review URL: https://codereview.chromium.org/111323005 git-svn-id: http://skia.googlecode.com/svn/trunk@12665 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Revert of https://codereview.chromium.org/112783004/"Gravatar reed@google.com2013-12-13
| | | | | | | | | | | | | This reverts commit 3293fe57a7507541e9040eab880dcd82c43881f4. Conflicts: src/core/SkScaledImageCache.cpp BUG= Review URL: https://codereview.chromium.org/108613005 git-svn-id: http://skia.googlecode.com/svn/trunk@12663 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert of https://codereview.chromium.org/112783004/Gravatar commit-bot@chromium.org2013-12-12
| | | | | | | | | | | | | | | Reason for revert: Failing assert on Android R=scroggo@google.com, halcanary@google.com, reed@google.com, rmistry@google.com TBR=halcanary@google.com, reed@google.com, scroggo@google.com NOTREECHECKS=true NOTRY=true Author: robertphillips@google.com Review URL: https://codereview.chromium.org/93673005 git-svn-id: http://skia.googlecode.com/svn/trunk@12646 2bbb7eff-a529-9590-31e7-b0007b416f81
* ensure that we call onUnlock only when we onLock succeededGravatar reed@google.com2013-12-12
| | | | | | | | | BUG= R=halcanary@google.com, scroggo@google.com Review URL: https://codereview.chromium.org/112783004 git-svn-id: http://skia.googlecode.com/svn/trunk@12642 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "remvoe duplicate impl for SkImageInfo flattening"Gravatar reed@google.com2013-12-11
| | | | | | | | | | | | Reason: breaks chrome_mac_tests which still have non-imageinfo constructors This reverts commit a06b8cf60b39bda93e9ef1a73579007b2b930d29. BUG= Review URL: https://codereview.chromium.org/103033005 git-svn-id: http://skia.googlecode.com/svn/trunk@12631 2bbb7eff-a529-9590-31e7-b0007b416f81
* remvoe duplicate impl for SkImageInfo flatteningGravatar reed@google.com2013-12-11
| | | | | | | | | | | | Revert "Revert "PixelRef now returns (nearly) everything that is currently in SkBitmap. The goal is to refactor bitmap later to remove redundancy, and more interestingly, remove the chance for a disconnect between the actual (pixelref) rowbytes and config, and the one claimed by the bitmap."""""" This reverts commit eabd6b2ed4e494b323c08f32358f45950a0368c3. BUG= Review URL: https://codereview.chromium.org/108773003 git-svn-id: http://skia.googlecode.com/svn/trunk@12624 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "PixelRef now returns (nearly) everything that is currently in ↵Gravatar reed@google.com2013-12-11
| | | | | | | | | | | | SkBitmap. The goal is to refactor bitmap later to remove redundancy, and more interestingly, remove the chance for a disconnect between the actual (pixelref) rowbytes and config, and the one claimed by the bitmap.""""" This reverts commit d08eca87a0bef10112a211de540f89656a80b86a. BUG= Review URL: https://codereview.chromium.org/108303003 git-svn-id: http://skia.googlecode.com/svn/trunk@12623 2bbb7eff-a529-9590-31e7-b0007b416f81
* PixelRef now returns (nearly) everything that is currently in SkBitmap. The ↵Gravatar reed@google.com2013-12-11
| | | | | | | | | | goal is to refactor bitmap later to remove redundancy, and more interestingly, remove the chance for a disconnect between the actual (pixelref) rowbytes and config, and the one claimed by the bitmap."""" BUG= Review URL: https://codereview.chromium.org/110503003 git-svn-id: http://skia.googlecode.com/svn/trunk@12622 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sk_API for SkImageGenerator and SkInstallDiscardablePixelRefGravatar halcanary@google.com2013-12-10
| | | | | | | | | | | | | | | | | | | | Added SK_API to SkImageGenerator (already in include/). Moved SkDiscardablePixelRef::Install to SkInstallDiscardablePixelRef, added SK_API to that function, and moved declaration to SkImageGenerator.h This keeps the SkDiscardablePixelRef internal to Skia, but exposes a method to install it into a bitmap. Modifed tests that rely on this functio to use new version. BUG= R=mtklein@google.com, reed@google.com Review URL: https://codereview.chromium.org/111713002 git-svn-id: http://skia.googlecode.com/svn/trunk@12612 2bbb7eff-a529-9590-31e7-b0007b416f81
* Sanitizing source files in Housekeeper-NightlyGravatar skia.committer@gmail.com2013-12-10
| | | | git-svn-id: http://skia.googlecode.com/svn/trunk@12590 2bbb7eff-a529-9590-31e7-b0007b416f81
* make info real in SkPixelRef, and add bitmap::asImageInfoGravatar reed@google.com2013-12-09
| | | | | | | | | BUG= R=scroggo@google.com Review URL: https://codereview.chromium.org/108663004 git-svn-id: http://skia.googlecode.com/svn/trunk@12586 2bbb7eff-a529-9590-31e7-b0007b416f81
* SkDecodingImageGenerator now uses SkStreamRewindableGravatar halcanary@google.com2013-12-09
| | | | | | | | | | | | | | | | | | This makes sense since Android will be giving us a stream and the decoders expect a stream. This also removes some glue code, DecodeMemoryToTarget, that works better using a SkImageGenerator. Motivation: This is a necessary step to move from SkImageRef to SkDiscardablePixelRef. SkImageDecoder::DecodeMemoryToTarget function removed. BUG= R=reed@google.com, scroggo@google.com Review URL: https://codereview.chromium.org/101973005 git-svn-id: http://skia.googlecode.com/svn/trunk@12560 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Revert "Revert "PixelRef now returns (nearly) everything that is ↵Gravatar reed@google.com2013-12-06
| | | | | | | | | | | | | | currently in SkBitmap. The goal is to refactor bitmap later to remove redundancy, and more interestingly, remove the chance for a disconnect between the actual (pixelref) rowbytes and config, and the one claimed by the bitmap.""" This reverts commit 5f035e90d6dea0139a4f204b634e7b7b3b4976d7. Reverting because it breaks chrome/blink due to new SkPixelRef constructor arg. BUG= Review URL: https://codereview.chromium.org/108993002 git-svn-id: http://skia.googlecode.com/svn/trunk@12551 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "Revert "PixelRef now returns (nearly) everything that is currently ↵Gravatar reed@google.com2013-12-06
| | | | | | | | | | | | in SkBitmap. The goal is to refactor bitmap later to remove redundancy, and more interestingly, remove the chance for a disconnect between the actual (pixelref) rowbytes and config, and the one claimed by the bitmap."" This reverts commit 4174afb18a9746bbad2a06c0ec2d4ad35f72d790. BUG= Review URL: https://codereview.chromium.org/108723003 git-svn-id: http://skia.googlecode.com/svn/trunk@12547 2bbb7eff-a529-9590-31e7-b0007b416f81
* Revert "PixelRef now returns (nearly) everything that is currently in ↵Gravatar reed@google.com2013-12-06
| | | | | | | | | | | | SkBitmap. The goal is to refactor bitmap later to remove redundancy, and more interestingly, remove the chance for a disconnect between the actual (pixelref) rowbytes and config, and the one claimed by the bitmap." This reverts commit 154e08b2f5904ef533da694e3510befcb9a3f3e2. revert due to warnings Review URL: https://codereview.chromium.org/108513003 git-svn-id: http://skia.googlecode.com/svn/trunk@12538 2bbb7eff-a529-9590-31e7-b0007b416f81
* PixelRef now returns (nearly) everything that is currently in SkBitmap. The ↵Gravatar reed@google.com2013-12-06
| | | | | | | | | | goal is to refactor bitmap later to remove redundancy, and more interestingly, remove the chance for a disconnect between the actual (pixelref) rowbytes and config, and the one claimed by the bitmap. R=mtklein@google.com, scroggo@google.com Review URL: https://codereview.chromium.org/68973005 git-svn-id: http://skia.googlecode.com/svn/trunk@12537 2bbb7eff-a529-9590-31e7-b0007b416f81
* Big Cleanup: SkBitmapFactory, SkLazyPixelRef, SkImageCacheGravatar halcanary@google.com2013-12-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removed SkBitmapFactory since no clients were using it. New cache selection mechanism can simply pass a SkDiscardableMemory::Factory into the SkDiscardablePixelRef if non-default SkDiscardableMemory should be used. Removed BitmapFactoryTest. SkDiscardableMemory::Factory interface. Android will need this functionality in the future inside their BitmapFactory. Removed SkLazyPixelRef, since it's functionality is now subsumed into SkDiscardablePixelRef. Removed LazyPixelRef test. Modified SkDiscardablePixelRef to optionally allow it to use a SkDiscardableMemory::Factory. This tiny change makes it a replacement for SkLazyPixelRef. This functioanlity is also necessary for moving Android over to SkDiscardablePixelRef from SkImageRef in a later CL. Added a test for this. SkDecodingImageGenerator::Install can optionally pass a factory in to SkDiscardablePixelRef. Removed SkImageCache, SkLruImageCache, and SkPurgeableImageCache. This functionality can be handled much more cleanly by SkDiscardableMemory. New SkDiscardableMemoryPool class to replace SkLruImageCache. In a later CL, we will replace SkImageRef_GlobalPool (used by android) as well. This is a concrete implementation of SkDiscardableMemory::Factory. Added a test for this. modified gm/factory.cpp to remove dependnce on SkBitmapFactory + SkLruImageCache. Now uses SkDecodingImageGenerator + SkDiscardablePixelRef + SkDiscardableMemoryPool. SkImageDecoder::Target replaces SkBitmapFactory::Target. The DecodeMemoryToTarget function may disappear in the future. Moved SkLazyCachingPixelRef::DecodeProc replaces SkBitmapFactory::DecodeProc. This is a short term change, since another CL changes SkLazyCachingPixelRef to use SkImageGenerator instead of DecodeProc. Modified DrawBitmapRectTest to use SkDiscardablePixelRef instead of SkLazyPixelRef. tools/LazyDecodeBitmap.cpp now uses SkDecodingImageGenerator + SkDiscardablePixelRef instead of a SkBitmapFactory. bench_pictures uses the Global SkDiscardableMemoryPool instead of a global gLruImageCache. R=reed@google.com, scroggo@google.com Review URL: https://codereview.chromium.org/103033002 git-svn-id: http://skia.googlecode.com/svn/trunk@12515 2bbb7eff-a529-9590-31e7-b0007b416f81
* Fix compilation with SK_ENABLE_INST_COUNT=1Gravatar commit-bot@chromium.org2013-12-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add INHERITED declarations to class declarations that prevent compilation with the flag. Remove SK_DEFINE_INST_COUNT from all class implementations. Instead, use function-local static variables in the reference count helper classes to create the global instances to store the needed info. The accessor functions are defined inline in the helper classes, so definitions are not needed. The initialization point of the variables should be as well defined as previously. Remove SK_DECLARE_INST_COUNT_TEMPLATE and use SK_DECLARE_INST_COUNT instead. This avoids possible future compilation errors further. For SK_ENABLE_INST_COUNT=0 compilation, add an empty static member function to all classes that use SK_DECLARE_INST_COUNT and SK_DECLARE_INST_COUNT_ROOT macros. The function ensures that classes contain public INHERITED typedef. This member function seems to be compiled away. This shouĺd ensure that part of the compilation errors are caught earlier. Also adds DSK_DECLARE_INST_COUNT to few SkPDFDict subclasses. R=robertphillips@google.com, richardlin@chromium.org, bsalomon@google.com Author: kkinnunen@nvidia.com Review URL: https://codereview.chromium.org/98703002 git-svn-id: http://skia.googlecode.com/svn/trunk@12501 2bbb7eff-a529-9590-31e7-b0007b416f81
* Remove deprecated setPrefConfigTable.Gravatar scroggo@google.com2013-12-04
| | | | | | | | | | | Safe once its only caller (in Android) has been updated. BUG=skia:1874 R=reed@google.com Review URL: https://codereview.chromium.org/99473004 git-svn-id: http://skia.googlecode.com/svn/trunk@12491 2bbb7eff-a529-9590-31e7-b0007b416f81
* Add SkImageGenerator InterfaceGravatar halcanary@google.com2013-11-21
| | | | | | | | | | | | | | | | | | - Add SkDiscardablePixelRef class that uses SkDiscardableMemory and a SkImageGenerator. - Add SkDecodingImageGenerator class as an example of a SkImageGenerator. - Add DecodingImageGenerator unit test. - Add SkBasicDiscardableMemory implmentation for unit tests only. R=reed@google.com, scroggo@google.com Review URL: https://codereview.chromium.org/74793011 git-svn-id: http://skia.googlecode.com/svn/trunk@12341 2bbb7eff-a529-9590-31e7-b0007b416f81
* More Windows 64b compilation warning fixesGravatar robertphillips@google.com2013-11-21
| | | | | | | | https://codereview.chromium.org/47513017/ git-svn-id: http://skia.googlecode.com/svn/trunk@12337 2bbb7eff-a529-9590-31e7-b0007b416f81
* Reverting r12315 (More Windows 64b compilation warning fixes) due to ↵Gravatar robertphillips@google.com2013-11-20
| | | | | | compilation failures git-svn-id: http://skia.googlecode.com/svn/trunk@12316 2bbb7eff-a529-9590-31e7-b0007b416f81
* More Windows 64b compilation warning fixesGravatar robertphillips@google.com2013-11-20
| | | | | | | | https://codereview.chromium.org/47513017/ git-svn-id: http://skia.googlecode.com/svn/trunk@12315 2bbb7eff-a529-9590-31e7-b0007b416f81
* Clean up after longjmp in SkImageDecoder_libpng.Gravatar scroggo@google.com2013-11-12
| | | | | | | | | | | | | In onDecodeInit, if longjmp sends us back to setjmp, destroy the png_struct and info_ptr before returning false. Since the PNGAutoClean has not been created yet, we were previously leaking resources. R=djsollen@google.com Review URL: https://codereview.chromium.org/68453006 git-svn-id: http://skia.googlecode.com/svn/trunk@12244 2bbb7eff-a529-9590-31e7-b0007b416f81
* Create nonPOD before setjmp.Gravatar scroggo@google.com2013-11-12
| | | | | | | | | | | | With PNGAutoClean created after setjmp, when longjmp is called its destructor is never called. Create it before setjmp, ensuring that its destructor is called. R=mtklein@google.com Review URL: https://codereview.chromium.org/65283002 git-svn-id: http://skia.googlecode.com/svn/trunk@12238 2bbb7eff-a529-9590-31e7-b0007b416f81
* 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