DM: fix -w/-r problems stemming from PM/UPM conversions.
authorcommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 3 Mar 2014 15:43:56 +0000 (15:43 +0000)
committercommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 3 Mar 2014 15:43:56 +0000 (15:43 +0000)
commit1426c1e9b6fdd803ebc88321ac6e08bb4a31fe0a
tree98001e7be6865156df27c3c20fea3522a5dcd252
parent47d98c8e85924effc651b09df72027e6801c92a1
DM: fix -w/-r problems stemming from PM/UPM conversions.

DM will now read and write a custom image format, which begins first with a
normal PNG, but also includes the bitmap's raw pixels.  Most tools (file
browser, Preview, Chrome, Skia image decoder) will read the file as PNG.  DM
skips the encoded PNG and reads the raw pixels instead.

This scheme allows perfect pixel comparisons that never go through PM -> UPM or
UPM -> PM conversions, as long as you compare on a machine with the same native
pixel format as the machine which generated the images.  Since we've only ever
used this to do same-machine comparisons, that's more than good enough for now.
We could convert as needed to a standardized PM pixel format if we find we want
these files to be portable.

DM -w output now does increase to ~1.3G.  If that turns out to be annoyingly
big, I'm sure I can come up with a simple pixelwise RLE instead of writing
uncompressed pixels.

BUG=skia:
R=reed@google.com, bsalomon@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/185343002

git-svn-id: http://skia.googlecode.com/svn/trunk@13638 2bbb7eff-a529-9590-31e7-b0007b416f81
dm/DMWriteTask.cpp