blob: e2f72caa8dd75c2922b1a5e8ac82f45e2a163097 [file] [log] [blame]
Hal Canarydb683012016-11-23 08:55:18 -07001/*
2 * Copyright 2016 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 SkImageEncoderPriv_DEFINED
9#define SkImageEncoderPriv_DEFINED
10
11#include "SkImageEncoder.h"
Hal Canarydb683012016-11-23 08:55:18 -070012
Matt Sarett84014f02017-01-10 11:28:54 -050013struct SkEncodeOptions {
14 enum class PremulBehavior {
15 // Convert to a linear space before premultiplying or unpremultiplying.
16 kGammaCorrect,
17
18 // Ignore the transfer function when premultiplying or unpremultiplying.
19 kLegacy,
20 };
21
22 PremulBehavior fPremulBehavior = PremulBehavior::kLegacy;
23};
24
Hal Canary1fcc4042016-11-30 17:07:59 -050025#ifdef SK_HAS_JPEG_LIBRARY
26 bool SkEncodeImageAsJPEG(SkWStream*, const SkPixmap&, int quality);
27#else
28 #define SkEncodeImageAsJPEG(...) false
29#endif
Hal Canarydb683012016-11-23 08:55:18 -070030
Hal Canary1fcc4042016-11-30 17:07:59 -050031#ifdef SK_HAS_PNG_LIBRARY
Matt Sarett84014f02017-01-10 11:28:54 -050032 bool SkEncodeImageAsPNG(SkWStream*, const SkPixmap&, const SkEncodeOptions&);
Hal Canary1fcc4042016-11-30 17:07:59 -050033#else
34 #define SkEncodeImageAsPNG(...) false
35#endif
Hal Canarydb683012016-11-23 08:55:18 -070036
Hal Canary1fcc4042016-11-30 17:07:59 -050037#ifdef SK_HAS_WEBP_LIBRARY
Matt Sarett55213562017-01-23 19:37:37 -050038 bool SkEncodeImageAsWEBP(SkWStream*, const SkPixmap&, const SkEncodeOptions&);
Hal Canary1fcc4042016-11-30 17:07:59 -050039 bool SkEncodeImageAsWEBP(SkWStream*, const SkPixmap&, int quality);
40#else
41 #define SkEncodeImageAsWEBP(...) false
42#endif
Hal Canarydb683012016-11-23 08:55:18 -070043
Hal Canarydb683012016-11-23 08:55:18 -070044#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
Hal Canary1fcc4042016-11-30 17:07:59 -050045 bool SkEncodeImageWithCG(SkWStream*, const SkPixmap&, SkEncodedImageFormat);
46#else
47 #define SkEncodeImageWithCG(...) false
Hal Canarydb683012016-11-23 08:55:18 -070048#endif
49
Hal Canary1fcc4042016-11-30 17:07:59 -050050#ifdef SK_BUILD_FOR_WIN
51 bool SkEncodeImageWithWIC(SkWStream*, const SkPixmap&, SkEncodedImageFormat, int quality);
52#else
53 #define SkEncodeImageWithWIC(...) false
Hal Canarydb683012016-11-23 08:55:18 -070054#endif
55
Hal Canarydb683012016-11-23 08:55:18 -070056#endif // SkImageEncoderPriv_DEFINED