1#ifndef SkImageEncoder_DEFINED
2#define SkImageEncoder_DEFINED
3
4#include "SkTypes.h"
5
6class SkBitmap;
7class SkWStream;
8
9class SkImageEncoder {
10public:
11    enum Type {
12        kJPEG_Type,
13        kPNG_Type,
14        kWEBP_Type
15    };
16    static SkImageEncoder* Create(Type);
17
18    virtual ~SkImageEncoder();
19
20    /*  Quality ranges from 0..100 */
21    enum {
22        kDefaultQuality = 80
23    };
24
25    bool encodeFile(const char file[], const SkBitmap&, int quality);
26    bool encodeStream(SkWStream*, const SkBitmap&, int quality);
27
28    static bool EncodeFile(const char file[], const SkBitmap&, Type,
29                           int quality);
30    static bool EncodeStream(SkWStream*, const SkBitmap&, Type,
31                           int quality);
32
33protected:
34    virtual bool onEncode(SkWStream*, const SkBitmap&, int quality) = 0;
35};
36
37#endif
38