Blame imageio/image_enc.h

Packit 9c6abc
// Copyright 2016 Google Inc. All Rights Reserved.
Packit 9c6abc
//
Packit 9c6abc
// Use of this source code is governed by a BSD-style license
Packit 9c6abc
// that can be found in the COPYING file in the root of the source
Packit 9c6abc
// tree. An additional intellectual property rights grant can be found
Packit 9c6abc
// in the file PATENTS. All contributing project authors may
Packit 9c6abc
// be found in the AUTHORS file in the root of the source tree.
Packit 9c6abc
// -----------------------------------------------------------------------------
Packit 9c6abc
//
Packit 9c6abc
//  All-in-one library to save PNG/JPEG/WebP/TIFF/WIC images.
Packit 9c6abc
//
Packit 9c6abc
// Author: Skal (pascal.massimino@gmail.com)
Packit 9c6abc
Packit 9c6abc
#ifndef WEBP_IMAGEIO_IMAGE_ENC_H_
Packit 9c6abc
#define WEBP_IMAGEIO_IMAGE_ENC_H_
Packit 9c6abc
Packit 9c6abc
#include <stdio.h>
Packit 9c6abc
Packit 9c6abc
#ifdef HAVE_CONFIG_H
Packit 9c6abc
#include "webp/config.h"
Packit 9c6abc
#endif
Packit 9c6abc
Packit 9c6abc
#include "webp/types.h"
Packit 9c6abc
#include "webp/decode.h"
Packit 9c6abc
Packit 9c6abc
#ifdef __cplusplus
Packit 9c6abc
extern "C" {
Packit 9c6abc
#endif
Packit 9c6abc
Packit 9c6abc
// Output types
Packit 9c6abc
typedef enum {
Packit 9c6abc
  PNG = 0,
Packit 9c6abc
  PAM,
Packit 9c6abc
  PPM,
Packit 9c6abc
  PGM,
Packit 9c6abc
  BMP,
Packit 9c6abc
  TIFF,
Packit 9c6abc
  RAW_YUV,
Packit 9c6abc
  ALPHA_PLANE_ONLY,  // this is for experimenting only
Packit 9c6abc
  // forced colorspace output (for testing, mostly)
Packit 9c6abc
  RGB, RGBA, BGR, BGRA, ARGB,
Packit 9c6abc
  RGBA_4444, RGB_565,
Packit 9c6abc
  rgbA, bgrA, Argb, rgbA_4444,
Packit 9c6abc
  YUV, YUVA
Packit 9c6abc
} WebPOutputFileFormat;
Packit 9c6abc
Packit 9c6abc
// General all-purpose call.
Packit 9c6abc
// Most formats expect a 'buffer' containing RGBA-like samples, except
Packit 9c6abc
// RAW_YUV, YUV and YUVA formats.
Packit 9c6abc
// If 'out_file_name' is "-", data is saved to stdout.
Packit 9c6abc
// Returns false if an error occurred, true otherwise.
Packit 9c6abc
int WebPSaveImage(const WebPDecBuffer* const buffer,
Packit 9c6abc
                  WebPOutputFileFormat format, const char* const out_file_name);
Packit 9c6abc
Packit 9c6abc
// Save to PNG.
Packit 9c6abc
#ifdef HAVE_WINCODEC_H
Packit 9c6abc
int WebPWritePNG(const char* out_file_name, int use_stdout,
Packit 9c6abc
                 const struct WebPDecBuffer* const buffer);
Packit 9c6abc
#else
Packit 9c6abc
int WebPWritePNG(FILE* out_file, const WebPDecBuffer* const buffer);
Packit 9c6abc
#endif
Packit 9c6abc
Packit 9c6abc
// Save to PPM format (RGB, no alpha)
Packit 9c6abc
int WebPWritePPM(FILE* fout, const struct WebPDecBuffer* const buffer);
Packit 9c6abc
Packit 9c6abc
// Save to PAM format (= PPM + alpha)
Packit 9c6abc
int WebPWritePAM(FILE* fout, const struct WebPDecBuffer* const buffer);
Packit 9c6abc
Packit 9c6abc
// Save 16b mode (RGBA4444, RGB565, ...) for debugging purposes.
Packit 9c6abc
int WebPWrite16bAsPGM(FILE* fout, const struct WebPDecBuffer* const buffer);
Packit 9c6abc
Packit 9c6abc
// Save as BMP
Packit 9c6abc
int WebPWriteBMP(FILE* fout, const struct WebPDecBuffer* const buffer);
Packit 9c6abc
Packit 9c6abc
// Save as TIFF
Packit 9c6abc
int WebPWriteTIFF(FILE* fout, const struct WebPDecBuffer* const buffer);
Packit 9c6abc
Packit 9c6abc
// Save the ALPHA plane (only) as a PGM
Packit 9c6abc
int WebPWriteAlphaPlane(FILE* fout, const struct WebPDecBuffer* const buffer);
Packit 9c6abc
Packit 9c6abc
// Save as YUV samples as PGM format (using IMC4 layout).
Packit 9c6abc
// See: http://www.fourcc.org/yuv.php#IMC4.
Packit 9c6abc
// (very convenient format for viewing the samples, esp. for odd dimensions).
Packit 9c6abc
int WebPWritePGM(FILE* fout, const struct WebPDecBuffer* const buffer);
Packit 9c6abc
Packit 9c6abc
// Save YUV(A) planes sequentially (raw dump)
Packit 9c6abc
int WebPWriteYUV(FILE* fout, const struct WebPDecBuffer* const buffer);
Packit 9c6abc
Packit 9c6abc
// Save 16b mode (RGBA4444, RGB565, ...) as PGM format, for debugging purposes.
Packit 9c6abc
int WebPWrite16bAsPGM(FILE* fout, const struct WebPDecBuffer* const buffer);
Packit 9c6abc
Packit 9c6abc
#ifdef __cplusplus
Packit 9c6abc
}    // extern "C"
Packit 9c6abc
#endif
Packit 9c6abc
Packit 9c6abc
#endif  // WEBP_IMAGEIO_IMAGE_ENC_H_