blob: dfc9f12ee98fbcec946f4c879fb71acafe573948 [file] [log] [blame]
scroggo6f5e6192015-06-18 12:53:43 -07001/*
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#ifndef SkWebpCodec_DEFINED
9#define SkWebpCodec_DEFINED
10
11#include "SkCodec.h"
12#include "SkEncodedFormat.h"
13#include "SkImageInfo.h"
14#include "SkTypes.h"
15
16class SkStream;
17
scroggodb30be22015-12-08 18:54:13 -080018static const size_t WEBP_VP8_HEADER_SIZE = 30;
19
scroggo6f5e6192015-06-18 12:53:43 -070020class SkWebpCodec final : public SkCodec {
21public:
22 // Assumes IsWebp was called and returned true.
23 static SkCodec* NewFromStream(SkStream*);
scroggodb30be22015-12-08 18:54:13 -080024 static bool IsWebp(const void*, size_t);
scroggo6f5e6192015-06-18 12:53:43 -070025protected:
msarette6dd0042015-10-09 11:07:34 -070026 Result onGetPixels(const SkImageInfo&, void*, size_t, const Options&, SkPMColor*, int*, int*)
scroggo6f5e6192015-06-18 12:53:43 -070027 override;
28 SkEncodedFormat onGetEncodedFormat() const override { return kWEBP_SkEncodedFormat; }
29
scroggo6f5e6192015-06-18 12:53:43 -070030 SkISize onGetScaledDimensions(float desiredScale) const override;
scroggob636b452015-07-22 07:16:20 -070031
scroggoe7fc14b2015-10-02 13:14:46 -070032 bool onDimensionsSupported(const SkISize&) override;
33
scroggob636b452015-07-22 07:16:20 -070034 bool onGetValidSubset(SkIRect* /* desiredSubset */) const override;
scroggo6f5e6192015-06-18 12:53:43 -070035private:
36 SkWebpCodec(const SkImageInfo&, SkStream*);
37
38 typedef SkCodec INHERITED;
39};
40#endif // SkWebpCodec_DEFINED