libwebp 0.1.2

A binding to libwebp
Documentation
# libwebp

This is a binding to [the libwebp library](https://developers.google.com/speed/webp/download).

## Usage

### Preparation

```toml
# Cargo.toml

[dependencies]
libwebp = { version = "0.1.2", features = ["0_6"] }
```

### Simple decoding

```rust
use libwebp::WebPDecodeRGBA;

let data: &[u8];

let (width, height, buf) = WebPDecodeRGBA(data).unwrap();
eprintln!("width = {}, height = {}", width, height);
eprintln!(
    "top-left pixel: rgba({}, {}, {}, {})",
    buf[0],
    buf[1],
    buf[2],
    buf[3] as f64 / 255.0,
)
```

### Simple encoding

```rust
use libwebp::WebPEncodeRGBA;

let buf: &[u8] = &[
    255, 255, 255, 255, // white
    255, 0, 0, 255, // red
    0, 255, 0, 255, // green
    0, 0, 255, 255, // blue
];
let data = WebPEncodeRGBA(buf, 2, 2, 8, 75.0).unwrap();
let lossless_data = WebPEncodeLosslessRGBA(buf, 2, 2, 8).unwrap();
```

## Minimum Supported Rust Version (MSRV)

Rust 1.31.0

## Features

- `demux` ... enables `libwebpdemux` functions.
- `mux` ... enables `libwebpmux` functions.
- `0_5` ... enables functions introduced in libwebp 0.5.0.
- `0_6` ... enables functions introduced in libwebp 0.6.0.
- `1_1` ... enables functions introduced in libwebp 1.1.0.
- `static` ... statically link against the bundled libwebp.
- `extern-types` ... enables `#![feature(extern_types)]`.

## Linking

If libwebp is found in the system, it links against the library.
Otherwise it builds and links against the bundled libwebp.

In these cases, static link is preferred:

- For musl target.
- When cross-compiling.
- `static` feature is turned on.
- `LIBWEBP_SYS_STATIC` environment variable is set to `1` when building.

## Related repositories

- https://github.com/qnighy/libwebp-sys2-rs
- https://github.com/qnighy/libwebp-image-rs

## Completeness

- `types.h`
  - [ ] `WebPMalloc`
  - [x] `WebPFree`
- `decode.h`
  - [x] `WebPGetDecoderVersion`
  - [x] `WebPGetInfo`
  - [x] `WebPDecode*`
  - [x] `WebPDecodeYUV`
  - [x] `WebPDecode*Into`
  - [x] `WebPDecodeYUVInto`
  - [x] `WEBP_CSP_MODE`
  - [x] `WebPIsPremultipliedMode`
  - [x] `WebPIsAlphaMode`
  - [x] `WebPIsRGBMode`
  - [ ] `WebPRGBABuffer`
  - [ ] `WebPYUVABuffer`
  - [ ] `WebPDecBuffer`
  - [ ] `WebPInitDecBuffer`
  - [ ] `WebPFreeDecBuffer`
  - [x] `VP8StatusCode`
  - [x] `WebPIDecoder` (internal memory)
  - [ ] `WebPIDecoder` (external memory)
  - [x] `WebPINewDecoder` (internal memory)
  - [ ] `WebPINewDecoder` (external memory)
  - [x] `WebPINewRGB` (internal memory)
  - [ ] `WebPINewRGB` (external memory)
  - [x] `WebPINewYUVA` (internal memory)
  - [ ] `WebPINewYUVA` (external memory)
  - [x] `WebPIDelete`
  - [x] `WebPIAppend`
  - [ ] `WebPIUpdate`
  - [x] `WebPIDecGetRGB`
  - [x] `WebPIDecGetYUVA`
  - [ ] `WebPIDecodedArea`
  - [ ] `WebPBitstreamFeatures`
  - [ ] `WebPGetFeatures`
  - [ ] `WebPDecoderOptions`
  - [ ] `WebPDecoderConfig`
  - [ ] `WebPInitDecoderConfig`
  - [ ] `WebPIDecode`
  - [ ] `WebPDecode`
- `encode.h`
  - [x] `WebPGetEncoderVersion`
  - [x] `WebPEncode*`
  - [x] `WebPEncodeLossless*`
  - [ ] `WebPImageHint`
  - [ ] `WebPConfig`
  - [ ] `WebPPreset`
  - [ ] `WebPConfigInit`
  - [ ] `WebPConfigPreset`
  - [ ] `WebPConfigLosslessPreset`
  - [ ] `WebPValidateConfig`
  - [ ] `WebPAuxStats`
  - [ ] `WebPWriterFunction`
  - [ ] `WebPMemoryWriter`
  - [ ] `WebPMemoryWriterInit`
  - [ ] `WebPMemoryWriterClear`
  - [ ] `WebPMemoryWrite`
  - [ ] `WebPProgressHook`
  - [ ] `WebPEncCSP`
  - [ ] `WebPEncodingError`
  - [ ] `WEBP_MAX_DIMENSION`
  - [ ] `WebPPicture`
  - [ ] `WebPPictureInit`
  - [ ] `WebPPictureAlloc`
  - [ ] `WebPPictureFree`
  - [ ] `WebPPictureCopy`
  - [ ] `WebPPlaneDistortion`
  - [ ] `WebPPictureDistortion`
  - [ ] `WebPPictureCrop`
  - [ ] `WebPPictureView`
  - [ ] `WebPPictureIsView`
  - [ ] `WebPPictureRescale`
  - [ ] `WebPPictureImportRGB`
  - [ ] `WebPPictureImportRGBA`
  - [ ] `WebPPictureImportRGBX`
  - [ ] `WebPPictureImportBGR`
  - [ ] `WebPPictureImportBGRA`
  - [ ] `WebPPictureImportBGRX`
  - [ ] `WebPPictureARGBToYUVA`
  - [ ] `WebPPictureARGBToYUVADithered`
  - [ ] `WebPPictureSharpARGBToYUVA`
  - [ ] `WebPPictureSmartARGBToYUVA`
  - [ ] `WebPPictureYUVAToARGB`
  - [ ] `WebPCleanupTransparentArea`
  - [ ] `WebPPictureHasTransparency`
  - [ ] `WebPBlendAlpha`
  - [ ] `WebPEncode`
- `mux_types.h`
  - Not at all
- `demux.h`
  - Not at all
- `mux.h`
  - Not at all