| Index: app/gfx/codec/png_codec.h
|
| ===================================================================
|
| --- app/gfx/codec/png_codec.h (revision 0)
|
| +++ app/gfx/codec/png_codec.h (working copy)
|
| @@ -2,8 +2,8 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef BASE_GFX_PNG_DECODER_H_
|
| -#define BASE_GFX_PNG_DECODER_H_
|
| +#ifndef APP_GFX_CODEC_PNG_CODEC_H_
|
| +#define APP_GFX_CODEC_PNG_CODEC_H_
|
|
|
| #include <vector>
|
|
|
| @@ -11,13 +11,15 @@
|
|
|
| class SkBitmap;
|
|
|
| -// Interface for decoding PNG data. This is a wrapper around libpng,
|
| -// which has an inconvenient interface for callers. This is currently designed
|
| -// for use in tests only (where we control the files), so the handling isn't as
|
| -// robust as would be required for a browser (see Decode() for more). WebKit
|
| -// has its own more complicated PNG decoder which handles, among other things,
|
| -// partially downloaded data.
|
| -class PNGDecoder {
|
| +namespace gfx {
|
| +
|
| +// Interface for encoding and decoding PNG data. This is a wrapper around
|
| +// libpng, which has an inconvenient interface for callers. This is currently
|
| +// designed for use in tests only (where we control the files), so the handling
|
| +// isn't as robust as would be required for a browser (see Decode() for more).
|
| +// WebKit has its own more complicated PNG decoder which handles, among other
|
| +// things, partially downloaded data.
|
| +class PNGCodec {
|
| public:
|
| enum ColorFormat {
|
| // 3 bytes per pixel (packed), in RGB order regardless of endianness.
|
| @@ -32,6 +34,35 @@
|
| FORMAT_BGRA
|
| };
|
|
|
| + // Encodes the given raw 'input' data, with each pixel being represented as
|
| + // given in 'format'. The encoded PNG data will be written into the supplied
|
| + // vector and true will be returned on success. On failure (false), the
|
| + // contents of the output buffer are undefined.
|
| + //
|
| + // When writing alpha values, the input colors are assumed to be post
|
| + // multiplied.
|
| + //
|
| + // w, h: dimensions of the image
|
| + // row_byte_width: the width in bytes of each row. This may be greater than
|
| + // w * bytes_per_pixel if there is extra padding at the end of each row
|
| + // (often, each row is padded to the next machine word).
|
| + // discard_transparency: when true, and when the input data format includes
|
| + // alpha values, these alpha values will be discarded and only RGB will be
|
| + // written to the resulting file. Otherwise, alpha values in the input
|
| + // will be preserved.
|
| + static bool Encode(const unsigned char* input, ColorFormat format,
|
| + int w, int h, int row_byte_width,
|
| + bool discard_transparency,
|
| + std::vector<unsigned char>* output);
|
| +
|
| + // Call PNGCodec::Encode on the supplied SkBitmap |input|, which is assumed
|
| + // to be BGRA, 32 bits per pixel. The params |discard_transparency| and
|
| + // |output| are passed directly to Encode; refer to Encode for more
|
| + // information. During the call, an SkAutoLockPixels lock is held on |input|.
|
| + static bool EncodeBGRASkBitmap(const SkBitmap& input,
|
| + bool discard_transparency,
|
| + std::vector<unsigned char>* output);
|
| +
|
| // Decodes the PNG data contained in input of length input_size. The
|
| // decoded data will be placed in *output with the dimensions in *w and *h
|
| // on success (returns true). This data will be written in the 'format'
|
| @@ -45,7 +76,7 @@
|
| int* w, int* h);
|
|
|
| // A convenience function for decoding PNGs as previously encoded by the PNG
|
| - // encoder. Chrome encodes png in the format PNGDecoder::FORMAT_BGRA.
|
| + // encoder. Chrome encodes png in the format PNGCodec::FORMAT_BGRA.
|
| //
|
| // Returns true if data is non-null and can be decoded as a png, false
|
| // otherwise.
|
| @@ -57,7 +88,9 @@
|
| std::vector<unsigned char>& bgra, int width, int height);
|
|
|
| private:
|
| - DISALLOW_COPY_AND_ASSIGN(PNGDecoder);
|
| + DISALLOW_COPY_AND_ASSIGN(PNGCodec);
|
| };
|
|
|
| -#endif // BASE_GFX_PNG_DECODER_H_
|
| +} // namespace gfx
|
| +
|
| +#endif // APP_GFX_CODEC_PNG_CODEC_H_
|
|
|
| Property changes on: app/gfx/codec/png_codec.h
|
| ___________________________________________________________________
|
| Added: svn:mergeinfo
|
| Merged /branches/chrome_webkit_merge_branch/base/gfx/png_decoder.h:r69-2775
|
|
|
|
|