blob: 07290aeb9f60afab4af5ec6f753bea1099cb01a7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
/*
* Copyright 2017 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SkJpegEncoder_DEFINED
#define SkJpegEncoder_DEFINED
#include "SkEncoder.h"
class SkJpegEncoderMgr;
class SkWStream;
class SkJpegEncoder : public SkEncoder {
public:
enum class AlphaOption {
kIgnore,
kBlendOnBlack,
};
struct Options {
/**
* |fQuality| must be in [0, 100] where 0 corresponds to the lowest quality.
*/
int fQuality = 100;
/**
* Jpegs must be opaque. This instructs the encoder on how to handle input
* images with alpha.
*
* The default is to ignore the alpha channel and treat the image as opaque.
* Another option is to blend the pixels onto a black background before encoding.
* In the second case, the encoder supports linear or legacy blending.
*/
AlphaOption fAlphaOption = AlphaOption::kIgnore;
SkTransferFunctionBehavior fBlendBehavior = SkTransferFunctionBehavior::kRespect;
};
/**
* Encode the |src| pixels to the |dst| stream.
* |options| may be used to control the encoding behavior.
*
* Returns true on success. Returns false on an invalid or unsupported |src|.
*/
static bool Encode(SkWStream* dst, const SkPixmap& src, const Options& options);
/**
* Create a jpeg encoder that will encode the |src| pixels to the |dst| stream.
* |options| may be used to control the encoding behavior.
*
* |dst| is unowned but must remain valid for the lifetime of the object.
*
* This returns nullptr on an invalid or unsupported |src|.
*/
static std::unique_ptr<SkJpegEncoder> Make(SkWStream* dst, const SkPixmap& src,
const Options& options);
~SkJpegEncoder() override;
protected:
bool onEncodeRows(int numRows) override;
private:
SkJpegEncoder(std::unique_ptr<SkJpegEncoderMgr>, const SkPixmap& src);
std::unique_ptr<SkJpegEncoderMgr> fEncoderMgr;
typedef SkEncoder INHERITED;
};
#endif
|