vips/
lib.rs

1//! vips-rs: Lightweight safety encapsulation of libvips (infrastructure such as initialization, concurrency, caching, versioning, etc.)
2//!
3//! Characteristics:
4//! - Remove 'lazy_static' and complete the global initialization with the standard library 'OnceLock';
5//! - Provide 'init()'/'is_initialized()', concurrency/cache control, version information;
6//! - Unified error handling (grab 'vips_error_buffer()');
7//! - Documentation examples with basic tests.
8//!
9//! Usage examples:
10//! ```no_run
11//! use vips::{init, set_concurrency};
12//!
13//! fn main() -> Result<(), Box<dyn std::error::Error>> {
14//!     // initialization (idempotent), recommended to call as early as possible
15//!     init(Some("my-app"))?;
16//!
17//!     // Configure concurrency (default = number of CPU cores)
18//!     vips::set_concurrency(4);
19//!
20//!     // Tuning the cache
21//!     vips::set_max_operations(1000);
22//!     vips::set_max_mem_bytes(256 * 1024 * 1024);
23//!     vips::set_max_files(100);
24//!
25//!     Ok(())
26//! }
27//! ```
28
29pub use crate::cache::*;
30pub use crate::concurrency::{concurrency, set_concurrency};
31pub use crate::error::{code_to_result, take_vips_error, Error, Result};
32pub use crate::init::{init, is_initialized};
33pub use crate::version::{version, version_string};
34
35mod instance;
36pub use instance::VipsInstance;
37
38mod image;
39pub use image::VipsImage;
40
41mod interpolate;
42pub use interpolate::{VipsInterpolate, VipsInterpolateMethod};
43
44mod region;
45pub use region::VipsRegion;
46
47mod buffer;
48pub use buffer::VipsBuffer;
49mod cache;
50mod concurrency;
51mod error;
52mod init;
53mod version;
54
55pub use vips_sys::{
56    VipsAccess, VipsAlign, VipsAngle, VipsAngle45, VipsArgumentFlags, VipsBandFormat,
57    VipsBlendMode, VipsCoding, VipsCombine, VipsCombineMode, VipsCompassDirection, VipsDemandStyle,
58    VipsDirection, VipsExtend, VipsForeignDzContainer, VipsForeignDzDepth, VipsForeignDzLayout,
59    VipsForeignFlags, VipsForeignPngFilter, VipsForeignTiffCompression, VipsForeignTiffPredictor,
60    VipsForeignTiffResunit, VipsForeignWebpPreset, VipsFormatFlags, VipsImageType, VipsIntent,
61    VipsInteresting, VipsInterpretation, VipsKernel, VipsOperationBoolean, VipsOperationComplex,
62    VipsOperationComplex2, VipsOperationComplexget, VipsOperationFlags, VipsOperationMath,
63    VipsOperationMath2, VipsOperationMorphology, VipsOperationRelational, VipsOperationRound,
64    VipsPCS, VipsPrecision, VipsRect, VipsSize, VipsToken,
65};
66
67// Simply re-export, no more repeated declaration of extern "C"
68pub use vips_sys::vips_call as call;