1    /// \defgroup BasicConcepts Basic Concepts
2    /// \brief Various basic concepts
3
4    /// \defgroup Point Point
5    /// \brief N-dimensional point
6        /// \defgroup PointConcept Concepts
7        /// \ingroup Point
8        /// \brief Concepts for points
9
10        /// \defgroup PointModel Models
11        /// \ingroup Point
12        /// \brief Models for points
13
14        /// \defgroup PointAlgorithm Algorithms and Utility Functions
15        /// \ingroup Point
16        /// \brief Algorithms and Utility Functions for points
17
18    /// \defgroup ColorSpaceAndLayout Color, Color Space, and Layout
19    /// \brief The color space and the layout define the set, ordering and interpretation of channels in a pixel
20        /// \defgroup ColorSpaceAndLayoutConcept Concepts
21        /// \ingroup ColorSpaceAndLayout
22
23        /// \defgroup ColorSpaceAndLayoutModel Models
24        /// \ingroup ColorSpaceAndLayout
25
26            /// \defgroup ColorNameModel Color Names
27            /// \ingroup ColorSpaceAndLayoutModel
28
29            /// \defgroup ColorSpaceModel Color Spaces
30            /// \ingroup ColorSpaceAndLayoutModel
31
32            /// \defgroup LayoutModel Layouts
33            /// \ingroup ColorSpaceAndLayoutModel
34
35    /// \defgroup Channel Channel
36    /// \brief Channel is the building block of pixel
37        /// \defgroup ChannelConcept Concepts
38        /// \ingroup Channel
39        /// \brief Concepts for channels
40
41        /// \defgroup ChannelModel Models
42        /// \ingroup Channel
43        /// \brief Channel models. Although not required by the ChannelConcept, all GIL-provided channels support arithmetic operations
44
45        /// \defgroup ChannelAlgorithm Algorithms and Utility Functions
46        /// \ingroup Channel
47        /// \brief Channel algorithms, metafunctions and utility functions
48
49/**
50        \defgroup ColorBase ColorBase
51        \brief A color base is a container of color elements.
52
53The most common use of color base is in the implementation of a pixel, in which case the color
54elements are channel values. The color base concept, however, can be used in other scenarios. For example, a planar pixel has channels that are not
55contiguous in memory. Its reference is a proxy class that uses a color base whose elements are channel references. Its iterator uses a color base
56whose elements are channel iterators.
57*/
58        /// \defgroup ColorBaseConcept Concepts
59        /// \ingroup ColorBase
60        /// \brief ColorBase concepts
61
62        /// \defgroup ColorBaseModel Models
63        /// \ingroup ColorBase
64        /// \brief ColorBase models
65
66        /// \defgroup ColorBaseAlgorithm Algorithms and Utility Functions
67        /// \ingroup ColorBase
68        /// \brief ColorBase algorithms, metafunctions and utility functions
69
70/**
71    \defgroup PixelBased PixelBased
72    \brief Concepts for all GIL constructs that are pixel-based (pixels, pixel iterators, locators, views, images).
73
74	PixelBasedConcept provides a uniform interface for getting some common properties of pixel-based constructs, such as the number of channels,
75	the color space, the layout, etc.
76*/
77        /// \defgroup PixelBasedConcept Concepts
78        /// \ingroup PixelBased
79        /// \brief PixelBased concepts
80
81        /// \defgroup PixelBasedModel Models
82        /// \ingroup PixelBased
83        /// \brief PixelBased models
84
85        /// \defgroup PixelBasedAlgorithm Algorithms and Utility Functions
86        /// \ingroup PixelBased
87        /// \brief PixelBased algorithms, metafunctions and utility functions.
88
89/**
90            \defgroup Pixel Pixel
91            \brief A pixel is a set of channels defining the color at a given point in an image.
92
93Conceptually, a pixel is little more than a color base whose elements model \p ChannelConcept.
94Many properties of pixels inherit from color bases: pixels may be <i>homogeneous</i> if all of their channels have the same type; otherwise they are
95called <i>heterogeneous</i>. The channels of a pixel may be addressed using semantic or physical indexing, or by color; all color base algorithms
96work on pixels as well. Two pixels are <i>compatible</i> if their color spaces are the same and their channels, paired semantically, are compatible.
97Note that constness, memory organization and reference/value are ignored. For example, an 8-bit RGB planar reference is compatible to a constant 8-bit
98BGR interleaved pixel value. Most pairwise pixel operations (copy construction, assignment, equality, etc.) are only defined for compatible pixels.
99
100*/
101        /// \defgroup PixelConcept Concepts
102        /// \ingroup Pixel
103        /// \brief Pixel concepts
104
105        /// \defgroup PixelModel Models
106        /// \ingroup Pixel
107        /// \brief Pixel models
108
109/**
110            \defgroup PixelAlgorithm Algorithms and Utility Functions
111            \ingroup Pixel
112            \brief Pixel algorithms, metafunctions and utility functions.
113
114Since pixels model the ColorBaseConcept, all color-base related algorithms also apply to pixels. See \ref ColorBaseAlgorithm for more.
115
116*/
117
118    /// \defgroup PixelDereferenceAdaptor Pixel Dereference Adaptor
119    /// \brief A function object invoked upon accessing of the pixel of a pixel iterator/locator/view
120
121        /// \defgroup PixelDereferenceAdaptorConcept Concepts
122        /// \ingroup PixelDereferenceAdaptor
123
124        /// \defgroup PixelDereferenceAdaptorModel Models
125        /// \ingroup PixelDereferenceAdaptor
126
127
128    /// \defgroup PixelIterator Pixel Iterator
129    /// \brief STL Iterators over models of PixelConcept
130
131        /// \defgroup PixelIteratorConcept Concepts
132        /// \ingroup PixelIterator
133        /// \brief Pixel iterator concepts
134
135        /// \defgroup PixelIteratorModel Models
136        /// \ingroup PixelIterator
137        /// \brief Pixel iterator models
138
139
140    /// \defgroup PixelLocator Pixel Locator
141    /// \brief Generalization of an iterator to multiple dimensions
142
143        /// \defgroup PixelLocatorConcept Concepts
144        /// \ingroup PixelLocator
145        /// \brief Pixel locator concepts
146
147        /// \defgroup PixelLocatorModel Models
148        /// \ingroup PixelLocator
149        /// \brief Pixel locator models
150
151    /// \defgroup ImageView Image View
152    /// \brief N-dimensional range
153
154        /// \defgroup ImageViewConcept Concepts
155        /// \ingroup ImageView
156        /// \brief Image view concepts
157
158        /// \defgroup ImageViewModel Models
159        /// \ingroup ImageView
160        /// \brief Image view models
161
162        /// \defgroup ImageViewAlgorithm Algorithms and Utility Functions
163        /// \ingroup ImageView
164        /// \brief Image view algorithms, metafunctions and utility functions
165
166/**
167    \defgroup Image Image
168    \brief N-dimensional container
169
170  An image is a container of N-dimensional data. GIL provides only one model, a two dimensional image whose \p value_type is a pixel.
171
172  Images are regular types (which means they have a default constructor, a copy constructor, \p operator=, \p operator==, \p operator!=, and \p swap)
173  As containers, images own the data, which means they allocate the data in their constructors and deallocate in the destructors. Their copy construction,
174  assignment and equality comparison is deep (i.e. propagates the operation to the values). That makes images expensive to pass by value, unlike views.
175
176  Also, unlike views, images propagate their constness to the data. An const-qualified image does not allow for modifying its pixels and does not provide
177  a mutable view over its pixels.
178
179  Images provide two services: they manage ownership of their data (the pixels) and they can return a view over their pixels.
180  Algorithms predominantly operate on views. This is analogous to the STL: In the STL containers (like \p std::vector) provide ranges (\p vec.begin()
181  and \p vec.end() ) and algorithms typically operate on ranges. The GIL equivalent of a range is an image view.
182
183*/
184        /// \defgroup ImageConcept Concepts
185        /// \ingroup Image
186        /// \brief Image concepts
187
188        /// \defgroup ImageModel Models
189        /// \ingroup Image
190        /// \brief Image models
191
192/**
193    \defgroup ImageProcessing Image Processing
194    \brief Image Processing algorithms
195
196  Collection of image processing algorithms currently implemented by GIL.
197*/
198
199    /// \defgroup Variant Variant
200    /// \brief A holder of a runtime instantiated type. Used to provide runtime-specified images and views
201
202    /// \defgroup Metafunctions Metafunctions
203    /// \brief Metafunctions to construct or query GIL types
204        /// \defgroup TypeFactory Type Factory Metafunctions
205        /// \ingroup Metafunctions
206        /// \brief Metafunctions that construct GIL types from related types or from components
207
208        /// \defgroup TypeAnalysis Type Analysis Metafunctions
209        /// \ingroup Metafunctions
210        /// \brief Metafunctions that determine properties of GIL types
211
212    /// \defgroup IO I/O
213    /// \brief Support for reading and writing images to file
214        /// \defgroup JPEG_IO JPEG I/O
215        /// \ingroup IO
216        /// \brief Support for reading and writing JPEG image files
217
218        /// \defgroup TIFF_IO TIFF I/O
219        /// \ingroup IO
220        /// \brief Support for reading and writing TIFF image files
221
222        /// \defgroup PNG_IO PNG I/O
223        /// \ingroup IO
224        /// \brief Support for reading and writing PNG image files
225
226/*!
227\mainpage API Reference
228
229\section Modules
230
231    - \ref BasicConcepts
232    - \ref Point
233        - \ref PointConcept
234        - \ref PointModel
235        - \ref PointAlgorithm
236    - \ref ColorSpaceAndLayout
237        - \ref ColorSpaceAndLayoutConcept
238        - \ref ColorSpaceAndLayoutModel
239    - \ref Channel
240        - \ref ChannelConcept
241        - \ref ChannelModel
242        - \ref ChannelAlgorithm
243    - \ref ColorBase
244        - \ref ColorBaseConcept
245        - \ref ColorBaseModel
246        - \ref ColorBaseAlgorithm
247    - \ref PixelBased
248        - \ref PixelBasedConcept
249        - \ref PixelBasedModel
250        - \ref PixelBasedAlgorithm
251    - \ref Pixel
252        - \ref PixelConcept
253        - \ref PixelModel
254        - \ref PixelAlgorithm
255    - \ref PixelDereferenceAdaptor
256        - \ref PixelDereferenceAdaptorConcept
257        - \ref PixelDereferenceAdaptorModel
258    - \ref PixelIterator
259        - \ref PixelIteratorConcept
260        - \ref PixelIteratorModel
261    - \ref PixelLocator
262        - \ref PixelLocatorConcept
263        - \ref PixelLocatorModel
264    - \ref ImageView
265        - \ref ImageViewConcept
266        - \ref ImageViewModel
267        - \ref ImageViewAlgorithm
268    - \ref Image
269        - \ref ImageConcept
270        - \ref ImageModel
271    - \ref ImageProcessing
272    - \ref Metafunctions
273        - \ref TypeFactory
274        - \ref TypeAnalysis
275    - \ref Variant
276    - \ref IO
277        - \ref JPEG_IO
278        - \ref TIFF_IO
279        - \ref PNG_IO
280*/
281
282