blob: 4d59d044c65828fff270625b439166ab174d1357 [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"
Matt Sarettc367d032017-05-05 11:13:26 -040012#include "SkImageInfoPriv.h"
13
14static inline bool SkPixmapIsValid(const SkPixmap& src,
15 SkTransferFunctionBehavior unpremulBehavior)
16{
17 if (SkTransferFunctionBehavior::kRespect == unpremulBehavior) {
18 if (!SkImageInfoIsValidRenderingCS(src.info())) {
19 return false;
20 }
21 } else {
22 if (!SkImageInfoIsValidAllowNumericalCS(src.info())) {
23 return false;
24 }
25 }
26
27 if (!src.addr() || src.rowBytes() < src.info().minRowBytes()) {
28 return false;
29 }
30
31 return true;
32}
Hal Canarydb683012016-11-23 08:55:18 -070033
Matt Sarett84014f02017-01-10 11:28:54 -050034struct SkEncodeOptions {
Matt Sarettcf3f2342017-03-23 15:32:25 -040035 SkTransferFunctionBehavior fUnpremulBehavior = SkTransferFunctionBehavior::kIgnore;
Matt Sarett84014f02017-01-10 11:28:54 -050036};
37
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