| Index: src/codec/SkCodec_libpng.h
 | 
| diff --git a/src/codec/SkCodec_libpng.h b/src/codec/SkCodec_libpng.h
 | 
| index debb14b882b8914d96011c1822afc0bcc7a9e600..fa7b39d82fdb497527a47b2d0d6a4fe2abbabf1b 100644
 | 
| --- a/src/codec/SkCodec_libpng.h
 | 
| +++ b/src/codec/SkCodec_libpng.h
 | 
| @@ -6,15 +6,17 @@
 | 
|   */
 | 
|  
 | 
|  #include "SkCodec.h"
 | 
| +#include "SkColorTable.h"
 | 
|  #include "SkEncodedFormat.h"
 | 
|  #include "SkImageInfo.h"
 | 
| +#include "SkRefCnt.h"
 | 
| +#include "SkSwizzler.h"
 | 
|  
 | 
|  extern "C" {
 | 
| -    // FIXME: I'd like to force all platforms to use the same decoder, but this
 | 
| -    // means an extra dependency on Mac/Win.
 | 
|      #include "png.h"
 | 
|  }
 | 
|  
 | 
| +class SkScanlineDecoder;
 | 
|  class SkStream;
 | 
|  
 | 
|  class SkPngCodec : public SkCodec {
 | 
| @@ -26,12 +28,30 @@ protected:
 | 
|      Result onGetPixels(const SkImageInfo&, void*, size_t, const Options&, SkPMColor*, int*)
 | 
|              SK_OVERRIDE;
 | 
|      SkEncodedFormat onGetEncodedFormat() const SK_OVERRIDE { return kPNG_SkEncodedFormat; }
 | 
| +    SkScanlineDecoder* onGetScanlineDecoder(const SkImageInfo& dstInfo) SK_OVERRIDE;
 | 
| +    bool onReallyHasAlpha() const SK_OVERRIDE { return fReallyHasAlpha; }
 | 
|  private:
 | 
| -    png_structp             fPng_ptr;
 | 
| -    png_infop               fInfo_ptr;
 | 
| +    png_structp                 fPng_ptr;
 | 
| +    png_infop                   fInfo_ptr;
 | 
| +
 | 
| +    // These are stored here so they can be used both by normal decoding and scanline decoding.
 | 
| +    SkAutoTUnref<SkColorTable>  fColorTable;    // May be unpremul.
 | 
| +    SkAutoTDelete<SkSwizzler>   fSwizzler;
 | 
| +
 | 
| +    SkSwizzler::SrcConfig       fSrcConfig;
 | 
| +    int                         fNumberPasses;
 | 
| +    bool                        fReallyHasAlpha;
 | 
|  
 | 
|      SkPngCodec(const SkImageInfo&, SkStream*, png_structp, png_infop);
 | 
|      ~SkPngCodec();
 | 
|  
 | 
| +    // Helper to set up swizzler and color table. Also calls png_read_update_info.
 | 
| +    Result initializeSwizzler(const SkImageInfo& requestedInfo, void* dst,
 | 
| +                              size_t rowBytes, const Options&);
 | 
| +    bool decodePalette(bool premultiply);
 | 
| +    void finish();
 | 
| +
 | 
| +    friend class SkPngScanlineDecoder;
 | 
| +
 | 
|      typedef SkCodec INHERITED;
 | 
|  };
 | 
| 
 |