blob: debb14b882b8914d96011c1822afc0bcc7a9e600 [file] [log] [blame]
scroggof24f2242015-03-03 08:59:20 -08001/*
2 * Copyright 2015 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "SkCodec.h"
scroggo1dd3ea92015-03-20 11:55:55 -07009#include "SkEncodedFormat.h"
scroggof24f2242015-03-03 08:59:20 -080010#include "SkImageInfo.h"
11
12extern "C" {
13 // FIXME: I'd like to force all platforms to use the same decoder, but this
14 // means an extra dependency on Mac/Win.
15 #include "png.h"
16}
17
18class SkStream;
19
20class SkPngCodec : public SkCodec {
21public:
22 // Assumes IsPng was called and returned true.
23 static SkCodec* NewFromStream(SkStream*);
24 static bool IsPng(SkStream*);
25protected:
scroggo95526622015-03-17 05:02:17 -070026 Result onGetPixels(const SkImageInfo&, void*, size_t, const Options&, SkPMColor*, int*)
27 SK_OVERRIDE;
scroggo1dd3ea92015-03-20 11:55:55 -070028 SkEncodedFormat onGetEncodedFormat() const SK_OVERRIDE { return kPNG_SkEncodedFormat; }
scroggof24f2242015-03-03 08:59:20 -080029private:
30 png_structp fPng_ptr;
31 png_infop fInfo_ptr;
32
33 SkPngCodec(const SkImageInfo&, SkStream*, png_structp, png_infop);
34 ~SkPngCodec();
35
36 typedef SkCodec INHERITED;
37};