Go to file
scroggo@google.com 8d2392487c Add an option on SkImageDecoder to skip writing 0s.
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
2013-10-01 17:27:15 +00:00
animations first cut at a checkbox 2009-10-21 19:41:10 +00:00
bench Add an option on SkImageDecoder to skip writing 0s. 2013-10-01 17:27:15 +00:00
debugger Allow creating a picture from skp to fail. 2013-10-01 15:30:46 +00:00
expectations Ignore flaky shadertext2_pdf-poppler tests on Mac-10.7 Release builds 2013-09-30 15:46:50 +00:00
experimental pdfviewer: do not submit, uploaded for backup, and will be done actually after I refactor the params for functions, to put the char* params in a structure: report errors and warnings in pdf, infrastructure 2013-09-13 19:33:42 +00:00
forth Sanitizing source files in Skia_Periodic_House_Keeping 2013-01-26 07:06:02 +00:00
gm HTTP GM results viewer: server now returns category summaries along with testData 2013-09-30 15:06:25 +00:00
gyp Add a GrCustomCoordsTextureEffect class 2013-09-30 18:41:38 +00:00
include Add an option on SkImageDecoder to skip writing 0s. 2013-10-01 17:27:15 +00:00
platform_tools Fix ninja build on Android 2013-10-01 15:31:54 +00:00
resources Bench baseline for mostly 0 image. 2013-09-25 21:42:12 +00:00
samplecode Change SkImageDecoders to take an SkStreamRewindable. 2013-09-25 21:34:24 +00:00
src Add an option on SkImageDecoder to skip writing 0s. 2013-10-01 17:27:15 +00:00
tests Add an option on SkImageDecoder to skip writing 0s. 2013-10-01 17:27:15 +00:00
third_party Add libpoppler for PDF rendering, take 2 2013-08-20 18:57:01 +00:00
tools Add an option on SkImageDecoder to skip writing 0s. 2013-10-01 17:27:15 +00:00
trybots_to_run/chrome Deleting the hardcoded list of compile bots in trybots_to_run. 2013-04-09 11:59:42 +00:00
.gitignore leading slash confuses non-git tools that read .gitignore, like ag 2013-07-30 17:23:01 +00:00
codereview.settings Removing blank lines from codereview.settings. 2013-02-26 16:01:21 +00:00
DEPS Adds poppler and dependencies to DEPS. This is a pre-CL for 20220002, and getting DEPS committed first is necessary to get the trybots to run on the larger CL (since the trybots do 'gclient sync' before patching). 2013-08-02 19:10:06 +00:00
Doxyfile Pointing to http://skia-autogen.googlecode.com/svn/docs/html/index.html in Doxyfile 2012-07-03 11:35:07 +00:00
gyp_skia Fix ninja build on Android 2013-10-01 15:31:54 +00:00
LICENSE Manually update copyright notices in files that defied the automated process 2011-07-28 14:24:55 +00:00
make.bat Make make.bat and gyp_skia work with VS 2012. 2013-05-07 19:31:20 +00:00
make.py Use SKIA_OUT variable in make.py 2013-07-23 15:45:50 +00:00
Makefile Update Skia Android tools. 2013-08-12 12:30:04 +00:00
Makefile.old Replace GR_*_BUILD by their SK_BUILD_FOR_* equivalents. 2013-09-25 20:57:51 +00:00
OWNERS add root files from chrome 2013-08-13 19:11:15 +00:00
PRESUBMIT.py If any change is made to the public API then make sure there is an LGTM from an owner. 2013-08-12 14:51:20 +00:00
README whitespace commit to trigger buildbot 2011-07-15 14:11:58 +00:00
README.chromium add root files from chrome 2013-08-13 19:11:15 +00:00
skia.gyp gyp: generate "everything" and "most" targets instead of "all" 2012-10-25 16:32:07 +00:00
whitespace.txt Reverted r11547; filing bugs for 64-bit warnings 2013-10-01 13:54:16 +00:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at http://code.google.com/p/skia/wiki/DocRoot