Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2931)

Unified Diff: app/gfx/codec/png_codec.h

Issue 243076: Move the JPEG and PNG codecs from base/gfx to app/gfx/codec. Move the classes... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698