Basic Image Input/Output and Helper Classes
The core of OpenImageIO consists of simple classes for format-agnostic reading and writing of image files:
- ImageInput is the public API that allows you to read images.
- ImageOutput is the public API that allows you to write images.
- ImageSpec is a helper class that describes an image (resolution, data format, metadata, etc.).
Helper Classes used by the main APIs
- TypeDesc describes data types and is used to describe channel formats and many other things throughout OpenImageIO. (typedesc.h)
- ParamValueList and ParamValue are used for storing arbitrary name/data pairs and are used to store metadata. (paramlist.h)
- ustring is string class that's especially suitable for super fast string copying and comparison (== and !=) and that stores the character strings uniquely. (ustring.h)
Cached Images and Filtered Texture
- ImageCache provides a way to access an unlimited number of images and amount of pixel data (thousands of files, hundreds of GB of pixels) using a read-on-demand cache system that uses as little as several tens of MB of RAM.
- ImageBuf is a handy method for manipulating image pixels in memory, completely hiding even the details of reading, writing, and memory management (by being based internally upon ImageInput, ImageOutput, and ImageCache).
- TextureSystem is an API for performing filtered anisotropic texture lookups (backed by ImageCache, so it can easily scale to essentially unlimited number of texture files and/or pixel data).
Gifts for developers
These classes and utilities are not exposed through any of the public OIIO APIs and are not necessary to understand even for people who are integrating OIIO into their applications. But we like them, feel that they are pretty useful, and so distribute them so that OIIO users may rely on them in their own apps.
- argparse.h : The ArgParse class that privides a really simple way to parse command-line arguments.
- dassert.h : Handy assertion macros.
- errorhandler.h : An ErrorHandler class.
- filesystem.h : Platform-independent utilties for handling file names, etc.
- fmath.h : Lots of numeric utilities.
- hash.h : Definitions helpful for using hash maps and hash functions.
- paramlist.h : The ParamValue and ParamValueList classes.
- refcnt.h : A "mix-in" class for intrusive reference counting.
- strutil.h : String utilities.
- sysutil.h : Platform-independent OS, hardware, and system utilities.
- thread.h : Threading, mutexes, atomics, etc.
- timer.h : A simple Timer class.
- typedesc.h : The TypeDesc class.
- ustring.h : The ustring class.
- varyingref.h : The VaryingRef template.