1Naming Conventions
2==================
3
4Description of established naming conventions used in source code of GIL,
5tests and examples.
6
7Concrete Types
8--------------
9
10Concrete (non-generic) GIL types follow this naming convention::
11
12  ColorSpace + BitDepth + [f | s]+ [c] + [_planar] + [_step] + ClassType + _t
13
14where:
15
16- ``ColorSpace`` indicates layout and ordering of components.
17  For example, ``rgb``, ``bgr``, ``cmyk``, ``rgba``.
18
19- ``BitDepth`` indicates the bit depth of the color channel.
20  For example, ``8``,``16``,``32``.
21
22- By default, type of channel is unsigned integral.
23  The ``s`` tag indicates signed integral.
24  The ``f`` tag indicates a floating point type, which is always signed.
25
26- By default, objects operate on mutable pixels.
27  The ``c`` tag indicates object operating over immutable pixels.
28
29- ``_planar`` indicates planar organization (as opposed to interleaved).
30
31- ``_step`` indicates special image views, locators and iterators which
32  traverse the data in non-trivial way. For example, backwards or every other
33  pixel.
34
35- ``ClassType`` is ``_image`` (image), ``_view`` (image view), ``_loc`` (pixel
36  2D locator) ``_ptr`` (pixel iterator), ``_ref`` (pixel reference),
37  ``_pixel`` (pixel value).
38
39- ``_t`` suffix indicaes it is a name of a type.
40
41For example:
42
43.. code-block:: cpp
44
45  bgr8_image_t             a;    // 8-bit interleaved BGR image
46  cmyk16_pixel_t           b;    // 16-bit CMYK pixel value;
47  cmyk16c_planar_ref_t     c(b); // const reference to a 16-bit planar CMYK pixel.
48  rgb32f_planar_step_ptr_t d;    // step pointer to a 32-bit planar RGB pixel.
49