blob: 69d45fbf8cfc180ecab7a674e375c10234f8b88c [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 {
Matt Sarett0e032be2017-03-15 17:50:08 -040014 enum class ColorBehavior {
Matt Sarett84014f02017-01-10 11:28:54 -050015 // Convert to a linear space before premultiplying or unpremultiplying.
Matt Sarett0e032be2017-03-15 17:50:08 -040016 kCorrect,
Matt Sarett84014f02017-01-10 11:28:54 -050017
18 // Ignore the transfer function when premultiplying or unpremultiplying.
19 kLegacy,
20 };
21
Matt Sarett0e032be2017-03-15 17:50:08 -040022 ColorBehavior fColorBehavior = ColorBehavior::kLegacy;
Matt Sarett84014f02017-01-10 11:28:54 -050023};
24
Hal Canary1fcc4042016-11-30 17:07:59 -050025#ifdef SK_HAS_JPEG_LIBRARY
Matt Sarette95941f2017-01-27 18:16:40 -050026 bool SkEncodeImageAsJPEG(SkWStream*, const SkPixmap&, const SkEncodeOptions&);
Hal Canary1fcc4042016-11-30 17:07:59 -050027 bool SkEncodeImageAsJPEG(SkWStream*, const SkPixmap&, int quality);
28#else
29 #define SkEncodeImageAsJPEG(...) false
30#endif
Hal Canarydb683012016-11-23 08:55:18 -070031
Hal Canary1fcc4042016-11-30 17:07:59 -050032#ifdef SK_HAS_PNG_LIBRARY
Matt Sarett84014f02017-01-10 11:28:54 -050033 bool SkEncodeImageAsPNG(SkWStream*, const SkPixmap&, const SkEncodeOptions&);
Hal Canary1fcc4042016-11-30 17:07:59 -050034#else
35 #define SkEncodeImageAsPNG(...) false
36#endif
Hal Canarydb683012016-11-23 08:55:18 -070037
Hal Canary1fcc4042016-11-30 17:07:59 -050038#ifdef SK_HAS_WEBP_LIBRARY
Matt Sarett55213562017-01-23 19:37:37 -050039 bool SkEncodeImageAsWEBP(SkWStream*, const SkPixmap&, const SkEncodeOptions&);
Hal Canary1fcc4042016-11-30 17:07:59 -050040 bool SkEncodeImageAsWEBP(SkWStream*, const SkPixmap&, int quality);
41#else
42 #define SkEncodeImageAsWEBP(...) false
43#endif
Hal Canarydb683012016-11-23 08:55:18 -070044
Hal Canarydb683012016-11-23 08:55:18 -070045#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
Hal Canary1fcc4042016-11-30 17:07:59 -050046 bool SkEncodeImageWithCG(SkWStream*, const SkPixmap&, SkEncodedImageFormat);
47#else
48 #define SkEncodeImageWithCG(...) false
Hal Canarydb683012016-11-23 08:55:18 -070049#endif
50
Hal Canary1fcc4042016-11-30 17:07:59 -050051#ifdef SK_BUILD_FOR_WIN
52 bool SkEncodeImageWithWIC(SkWStream*, const SkPixmap&, SkEncodedImageFormat, int quality);
53#else
54 #define SkEncodeImageWithWIC(...) false
Hal Canarydb683012016-11-23 08:55:18 -070055#endif
56
Hal Canarydb683012016-11-23 08:55:18 -070057#endif // SkImageEncoderPriv_DEFINED