skia2/gm
scroggo@google.com f8d7d27313 Create SkLazyPixelRef which performs lazy decoding.
The new pixel ref behaves similarly to SkImageRef, with some key differences:
It does not depend on the images project.
It requires an SkImageCache, which handles allocation and caching of the pixel
memory.
It takes a function signature for decoding which decodes into already allocated
pixel memory rather than into an SkBitmap.

Add two implementations of SkImageCache: SkLruImageCache and SkAshmemImageCache.

Replace SkSerializationHelpers::DecodeBitmap with SkPicture::InstallPixelRefProc,
and update sites that referenced it.

SkBitmapFactory now sets the pixel ref to a new object of the new
class SkLazyPixelRef, provided it has an SkImageCache for caching.

Provide an option to do lazy decodes in render_pictures and bench_pictures.

SkPicture:
Eliminate the default parameters in the constructor.
If a proc for decoding bitmaps is installed, use it to decode any encoded
data in subpictures.
When parsing deserializing subpictures, check for success.
When serializing subpictures, pass the picture's bitmap encoder to the
subpicture's call to serialize.

Update BitmapFactoryTest to test its new behavior.

BUG=https://code.google.com/p/skia/issues/detail?id=1008
BUG=https://code.google.com/p/skia/issues/detail?id=1009

Review URL: https://codereview.appspot.com/7060052

git-svn-id: http://skia.googlecode.com/svn/trunk@7835 2bbb7eff-a529-9590-31e7-b0007b416f81
2013-02-22 21:38:35 +00:00
..
resources Create a factory to decode an SkBitmap from an SkData. 2012-11-29 21:05:37 +00:00
tests Fix GM self-test expectations, mkII 2013-02-21 19:48:02 +00:00
aaclip.cpp add new gms for shallow_gradient, in preparation for improving their quality 2013-02-04 16:56:15 +00:00
aarectmodes.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
arithmode.cpp Defining new color constat for transparent color 2012-12-06 21:47:40 +00:00
bicubicfilter.cpp (Relanding r7275 with assert fix, plus fixes from r7276, r7280, r7283.) 2013-01-18 20:48:20 +00:00
bigmatrix.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
bitmapcopy.cpp Add flag to skip pipe on select GMs 2012-07-20 18:45:10 +00:00
bitmapfilters.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
bitmapmatrix.cpp Added additional case to GM:drawbitmapmatrix 2012-09-28 17:24:44 +00:00
bitmaprect.cpp Fixed remaining clang compiler warnings 2012-12-03 17:35:19 +00:00
bitmapscroll.cpp fix warning from scalar --> int32 conversion 2013-01-07 19:54:40 +00:00
blend.cpp revert name changes to SkBlendImageFilter. It (correctly) named its enum kMultiply_Mode, 2013-02-01 14:35:09 +00:00
blurrect.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-02-21 07:15:03 +00:00
blurs.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
circles.cpp Add file missing from r3682 checkin 2012-04-16 14:19:32 +00:00
cmykjpeg.cpp fix warning from scalar --> int32 conversion 2013-01-07 19:54:40 +00:00
colorfilterimagefilter.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
colormatrix.cpp Add transparent source bitmap to colormatrix GM. 2012-10-16 17:50:48 +00:00
complexclip2.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:19:56 +00:00
complexclip.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:14:13 +00:00
composeshader.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
convexpaths.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
cubicpaths.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:14:13 +00:00
dashcubics.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
dashing.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
degeneratesegments.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:14:13 +00:00
displacement.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-16 07:05:56 +00:00
distantclip.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2012-09-18 02:01:09 +00:00
drawbitmaprect.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
drawlooper.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
emptypath.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:19:56 +00:00
extractbitmap.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:19:56 +00:00
factory.cpp Create SkLazyPixelRef which performs lazy decoding. 2013-02-22 21:38:35 +00:00
fatpathfill.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
filltypes.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
filltypespersp.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
fontscaler.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
gammatext.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:14:13 +00:00
getpostextpath.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
giantbitmap.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
gm_expectations.h gm: Add ability to compare against checksums (as opposed to image files) 2013-02-13 18:14:48 +00:00
gm.cpp add onOnceBeforeDraw() virtual, so gm's can easily perform lazy initialization 2012-11-27 15:15:58 +00:00
gm.h add width() and height() helpers 2013-02-01 15:01:24 +00:00
gmmain.cpp Fix ignored errors in GM when no reference images are provided 2013-02-21 18:34:14 +00:00
gradients.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
gradtext.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
hairmodes.cpp add onOnceBeforeDraw() virtual, so gm's can easily perform lazy initialization 2012-11-27 15:15:58 +00:00
hittestpath.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
image.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
image.h check-point for image/surface work 2012-07-29 20:38:16 +00:00
imageblur.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:14:13 +00:00
imagefiltersbase.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
imagefiltersgraph.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
imagemagnifier.cpp Skip tiled drawing in GM for magnifier image filter. 2012-08-15 16:32:19 +00:00
lcdtext.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:14:13 +00:00
lighting.cpp Changing imageFilter GM tests to use drawBitmap instead of drawSprite 2013-01-14 16:27:50 +00:00
linepaths.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:14:13 +00:00
matrixconvolution.cpp Changing imageFilter GM tests to use drawBitmap instead of drawSprite 2013-01-14 16:27:50 +00:00
modecolorfilters.cpp clone of https://codereview.appspot.com/7208043/ 2013-01-30 21:36:11 +00:00
morphology.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:19:56 +00:00
ninepatchstretch.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
nocolorbleed.cpp Import all GMs as Samples. 2011-10-31 14:18:20 +00:00
patheffects.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:19:56 +00:00
pathfill.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
pathinterior.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
pathreverse.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:14:13 +00:00
points.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
poly2poly.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
quadpaths.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:14:13 +00:00
rrect.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
rrects.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
samplerstress.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:19:56 +00:00
shaderbounds.cpp Fix some fixed-point bugs. 2012-04-17 21:46:18 +00:00
shadertext2.cpp Defining new color constat for transparent color 2012-12-06 21:47:40 +00:00
shadertext3.cpp Minor cleanup 2012-12-12 15:58:25 +00:00
shadertext.cpp Defining new color constat for transparent color 2012-12-06 21:47:40 +00:00
shadows.cpp Fix type errors and a few warnings for Visual Studio 2010 64-bit build. 2012-05-17 15:38:00 +00:00
shallowgradient.cpp add new gms for shallow_gradient, in preparation for improving their quality 2013-02-04 16:56:15 +00:00
simpleaaclip.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2012-12-15 02:03:10 +00:00
spritebitmap.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-17 07:06:06 +00:00
srcmode.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
strokefill.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:19:56 +00:00
strokerect.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
strokerects.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
strokes.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
system_preferences_default.cpp Set LCD font smoothing to "medium" for gm on Mac, regardless of system settings 2012-02-14 14:53:59 +00:00
system_preferences_mac.mm gm: Include system_preferences.h in mac file. 2012-09-26 15:41:42 +00:00
system_preferences.h Set LCD font smoothing to "medium" for gm on Mac, regardless of system settings 2012-02-14 14:53:59 +00:00
tablecolorfilter.cpp Defining new color constat for transparent color 2012-12-06 21:47:40 +00:00
techtalk1.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
testimagefilters.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
texdata.cpp Remove legacy names no longer referenced in Chrome and WebKit. 2013-02-07 14:43:04 +00:00
texteffects.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
tilemodes.cpp use DEF_GM 2013-02-22 17:28:16 +00:00
tinybitmap.cpp add onOnceBeforeDraw() virtual, so gm's can easily perform lazy initialization 2012-11-27 15:15:58 +00:00
twopointradial.cpp Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
typeface.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:19:56 +00:00
valgrind.supp Close an (incidental) memory leak in gmmain. 2012-03-15 13:39:51 +00:00
verttext2.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:19:56 +00:00
verttext.cpp Vertical metrics for FreeType. 2012-09-25 20:38:28 +00:00
verylargebitmap.cpp Result of running tools/sanitize_source_files.py (which was added in https://codereview.appspot.com/6465078/) 2012-08-23 18:19:56 +00:00
xfermodes.cpp land https://codereview.appspot.com/7221086/ -- add Multiply xfermode matching CSS spec 2013-02-04 20:06:00 +00:00