1db6830162eca5b94e61d9825ec93306fc615d204Hal Canary/*
2db6830162eca5b94e61d9825ec93306fc615d204Hal Canary * Copyright 2016 Google Inc.
3db6830162eca5b94e61d9825ec93306fc615d204Hal Canary *
4db6830162eca5b94e61d9825ec93306fc615d204Hal Canary * Use of this source code is governed by a BSD-style license that can be
5db6830162eca5b94e61d9825ec93306fc615d204Hal Canary * found in the LICENSE file.
6db6830162eca5b94e61d9825ec93306fc615d204Hal Canary */
7db6830162eca5b94e61d9825ec93306fc615d204Hal Canary
8db6830162eca5b94e61d9825ec93306fc615d204Hal Canary#ifndef SkImageEncoderPriv_DEFINED
9db6830162eca5b94e61d9825ec93306fc615d204Hal Canary#define SkImageEncoderPriv_DEFINED
10db6830162eca5b94e61d9825ec93306fc615d204Hal Canary
11db6830162eca5b94e61d9825ec93306fc615d204Hal Canary#include "SkImageEncoder.h"
12db6830162eca5b94e61d9825ec93306fc615d204Hal Canary
1384014f03a90d137c0f5c95e15c1e5f8503df7101Matt Sarettstruct SkEncodeOptions {
14cf3f2347c8933596aeba873d4ece597a9339392fMatt Sarett    SkTransferFunctionBehavior fUnpremulBehavior = SkTransferFunctionBehavior::kIgnore;
1584014f03a90d137c0f5c95e15c1e5f8503df7101Matt Sarett};
1684014f03a90d137c0f5c95e15c1e5f8503df7101Matt Sarett
171fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#ifdef SK_HAS_JPEG_LIBRARY
18e95941f2c61d8bcb5aaf60968e4391a1c7a0d593Matt Sarett    bool SkEncodeImageAsJPEG(SkWStream*, const SkPixmap&, const SkEncodeOptions&);
191fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary    bool SkEncodeImageAsJPEG(SkWStream*, const SkPixmap&, int quality);
201fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#else
211fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary    #define SkEncodeImageAsJPEG(...) false
221fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#endif
23db6830162eca5b94e61d9825ec93306fc615d204Hal Canary
241fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#ifdef SK_HAS_PNG_LIBRARY
2584014f03a90d137c0f5c95e15c1e5f8503df7101Matt Sarett    bool SkEncodeImageAsPNG(SkWStream*, const SkPixmap&, const SkEncodeOptions&);
261fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#else
271fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary    #define SkEncodeImageAsPNG(...) false
281fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#endif
29db6830162eca5b94e61d9825ec93306fc615d204Hal Canary
301fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#ifdef SK_HAS_WEBP_LIBRARY
3155213562f9a63cbc324833fdd1c16cc79646515aMatt Sarett    bool SkEncodeImageAsWEBP(SkWStream*, const SkPixmap&, const SkEncodeOptions&);
321fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary    bool SkEncodeImageAsWEBP(SkWStream*, const SkPixmap&, int quality);
331fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#else
341fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary    #define SkEncodeImageAsWEBP(...) false
351fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#endif
36db6830162eca5b94e61d9825ec93306fc615d204Hal Canary
37db6830162eca5b94e61d9825ec93306fc615d204Hal Canary#if defined(SK_BUILD_FOR_MAC) || defined(SK_BUILD_FOR_IOS)
381fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary    bool SkEncodeImageWithCG(SkWStream*, const SkPixmap&, SkEncodedImageFormat);
391fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#else
401fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary    #define SkEncodeImageWithCG(...) false
41db6830162eca5b94e61d9825ec93306fc615d204Hal Canary#endif
42db6830162eca5b94e61d9825ec93306fc615d204Hal Canary
431fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#ifdef SK_BUILD_FOR_WIN
441fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary    bool SkEncodeImageWithWIC(SkWStream*, const SkPixmap&, SkEncodedImageFormat, int quality);
451fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary#else
461fcc40474f1ad1f522d0a61086e25a71ca0a6881Hal Canary    #define SkEncodeImageWithWIC(...) false
47db6830162eca5b94e61d9825ec93306fc615d204Hal Canary#endif
48db6830162eca5b94e61d9825ec93306fc615d204Hal Canary
49db6830162eca5b94e61d9825ec93306fc615d204Hal Canary#endif // SkImageEncoderPriv_DEFINED
50