+
+
+
+
+
+algorithm.hpp File Reference Detailed Description
+Some basic STL-style algorithms when applied to image views.
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+Date: 2005-2007
+ Last updated on May 6, 2007
+
+
+#include <cassert>
+#include <cstddef>
+#include <algorithm>
+#include <iterator>
+#include <memory>
+#include "gil_config.hpp "
+#include "gil_concept.hpp "
+#include "color_base_algorithm.hpp "
+#include "image_view.hpp "
+#include "image_view_factory.hpp "
+#include "bit_aligned_pixel_iterator.hpp "
+
+
+Go to the source code of this file.
+
+Namespaces
+namespace boost
+
+namespace boost::gil
+
+namespace std
+
+namespace boost::gil::detail
+
+Classes
+struct binary_operation_obj
+
+ A generic binary operation on views
+Use this class as a convenience superclass when defining an operation for any image views. Many operations have different behavior when the two views are compatible. This class checks for compatibility and invokes apply_compatible(V1,V2) or apply_incompatible(V1,V2) of the subclass. You must provide apply_compatible(V1,V2) method in your subclass, but apply_incompatible(V1,V2) is not required and the default throws std::bad_cast. More...
+struct copier_n
+
+struct copier_n< iterator_from_2d< IL >, O >
+
+ Source range is delimited by image iterators. More...
+struct copier_n< I, iterator_from_2d< OL > >
+
+ Destination range is delimited by image iterators. More...
+struct copier_n< iterator_from_2d< IL >, iterator_from_2d< OL > >
+
+ Both source and destination ranges are delimited by image iterators. More...
+struct std_fill_t
+
+ struct to do std::fill More...
+struct equal_n_fn< const pixel< T, Cs > *, const pixel< T, Cs > * >
+
+struct equal_n_fn< planar_pixel_iterator< IC, Cs >, planar_pixel_iterator< IC, Cs > >
+
+struct equal_n_fn< boost::gil::iterator_from_2d< Loc >, I2 >
+
+ Source range is delimited by image iterators. More...
+struct equal_n_fn< I1, boost::gil::iterator_from_2d< Loc > >
+
+ Destination range is delimited by image iterators. More...
+struct equal_n_fn< boost::gil::iterator_from_2d< Loc1 >, boost::gil::iterator_from_2d< Loc2 > >
+
+ Both source and destination ranges are delimited by image iterators. More...
+Functions
+
+template<typename T, typename Cs>
+GIL_FORCEINLINE boost::gil::pixel <
+ T, Cs > * std::copy (boost::gil::pixel < T, Cs > *first, boost::gil::pixel < T, Cs > *last, boost::gil::pixel < T, Cs > *dst)
+
+ Copy when both src and dst are interleaved and of the same type can be just memmove.
+
+template<typename T, typename Cs>
+GIL_FORCEINLINE boost::gil::pixel <
+ T, Cs > * std::copy (const boost::gil::pixel < T, Cs > *first, const boost::gil::pixel < T, Cs > *last, boost::gil::pixel < T, Cs > *dst)
+
+ Copy when both src and dst are interleaved and of the same type can be just memmove.
+
+template<typename Cs, typename IC1, typename IC2>
+GIL_FORCEINLINE boost::gil::planar_pixel_iterator <
+ IC2, Cs > std::copy (boost::gil::planar_pixel_iterator < IC1, Cs > first, boost::gil::planar_pixel_iterator < IC1, Cs > last, boost::gil::planar_pixel_iterator < IC2, Cs > dst)
+
+ Copy when both src and dst are planar pointers is copy for each channel.
+
+template<typename SrcIterator, typename DstIterator>
+GIL_FORCEINLINE DstIterator boost::gil::detail::copy_with_2d_iterators (SrcIterator first, SrcIterator last, DstIterator dst)
+
+
+template<typename IL, typename OL>
+GIL_FORCEINLINE boost::gil::iterator_from_2d <
+ OL > std::copy1 (boost::gil::iterator_from_2d < IL > first, boost::gil::iterator_from_2d < IL > last, boost::gil::iterator_from_2d < OL > dst)
+
+ std::copy(I1,I1,I2) with I1 and I2 being a iterator_from_2d
+
+template<typename View1, typename View2>
+GIL_FORCEINLINE void boost::gil::copy_pixels (const View1 &src, const View2 &dst)
+
+ std::copy for image views
+
+template<typename V1, typename V2, typename CC>
+GIL_FORCEINLINE void boost::gil::copy_and_convert_pixels (const V1 &src, const V2 &dst, CC cc)
+
+
+template<typename View1, typename View2>
+GIL_FORCEINLINE void boost::gil::copy_and_convert_pixels (const View1 &src, const View2 &dst)
+
+template<typename IL, typename V>
+void std::fill (boost::gil::iterator_from_2d < IL > first, boost::gil::iterator_from_2d < IL > last, const V &val)
+
+ std::fill(I,I,V) with I being a iterator_from_2d
+
+template<typename It, typename P>
+GIL_FORCEINLINE void boost::gil::detail::fill_aux (It first, It last, const P &p, mpl::true_)
+
+ std::fill for planar iterators
+
+template<typename It, typename P>
+GIL_FORCEINLINE void boost::gil::detail::fill_aux (It first, It last, const P &p, mpl::false_)
+
+ std::fill for interleaved iterators
+
+template<typename View, typename Value>
+GIL_FORCEINLINE void boost::gil::fill_pixels (const View &img_view, const Value &val)
+
+ std::fill for image views
+
+template<typename It>
+GIL_FORCEINLINE void boost::gil::detail::destruct_range_impl (It first, It last, mpl::true_)
+
+
+template<typename It>
+GIL_FORCEINLINE void boost::gil::detail::destruct_range_impl (It first, It last, mpl::false_)
+
+
+template<typename It>
+GIL_FORCEINLINE void boost::gil::detail::destruct_range (It first, It last)
+
+
+template<typename It>
+GIL_FORCEINLINE void boost::gil::detail::destruct_aux (It first, It last, mpl::true_)
+
+ destruct for planar iterators
+
+template<typename It>
+GIL_FORCEINLINE void boost::gil::detail::destruct_aux (It first, It last, mpl::false_)
+
+ destruct for interleaved iterators
+
+template<typename View>
+GIL_FORCEINLINE void boost::gil::destruct_pixels (const View &img_view)
+
+ Invokes the in-place destructor on every pixel of the view.
+template<typename It, typename P>
+GIL_FORCEINLINE void boost::gil::detail::uninitialized_fill_aux (It first, It last, const P &p, mpl::true_)
+
+template<typename It, typename P>
+GIL_FORCEINLINE void boost::gil::detail::uninitialized_fill_aux (It first, It last, const P &p, mpl::false_)
+
+
+template<typename View, typename Value>
+void boost::gil::uninitialized_fill_pixels (const View &img_view, const Value &val)
+
+ std::uninitialized_fill for image views. Does not support planar heterogeneous views. If an exception is thrown destructs any in-place copy-constructed pixels
+
+template<typename It>
+GIL_FORCEINLINE void boost::gil::detail::default_construct_range_impl (It first, It last, mpl::true_)
+
+
+template<typename It>
+GIL_FORCEINLINE void boost::gil::detail::default_construct_range_impl (It first, It last, mpl::false_)
+
+
+template<typename It>
+GIL_FORCEINLINE void boost::gil::detail::default_construct_range (It first, It last)
+
+
+template<typename It>
+GIL_FORCEINLINE void boost::gil::detail::default_construct_aux (It first, It last, mpl::true_)
+
+ uninitialized_default_construct for planar iterators
+
+template<typename It>
+GIL_FORCEINLINE void boost::gil::detail::default_construct_aux (It first, It last, mpl::false_)
+
+ uninitialized_default_construct for interleaved iterators
+
+template<typename View>
+void boost::gil::default_construct_pixels (const View &img_view)
+
+ Invokes the in-place default constructor on every pixel of the (uninitialized) view. Does not support planar heterogeneous views. If an exception is thrown destructs any in-place default-constructed pixels.
+
+template<typename It1, typename It2>
+GIL_FORCEINLINE void boost::gil::detail::uninitialized_copy_aux (It1 first1, It1 last1, It2 first2, mpl::true_)
+
+ std::uninitialized_copy for pairs of planar iterators
+
+template<typename It1, typename It2>
+GIL_FORCEINLINE void boost::gil::detail::uninitialized_copy_aux (It1 first1, It1 last1, It2 first2, mpl::false_)
+
+ std::uninitialized_copy for interleaved or mixed iterators
+
+template<typename View1, typename View2>
+void boost::gil::uninitialized_copy_pixels (const View1 &view1, const View2 &view2)
+
+ std::uninitialized_copy for image views. Does not support planar heterogeneous views. If an exception is thrown destructs any in-place copy-constructed objects
+
+template<typename V, typename F>
+F boost::gil::for_each_pixel (const V &img, F fun)
+
+
+template<typename View, typename F>
+F boost::gil::for_each_pixel_position (const View &img, F fun)
+
+
+template<typename View, typename F>
+void boost::gil::generate_pixels (const View &v, F fun)
+
+ std::generate for image views
+
+template<typename I1, typename I2>
+GIL_FORCEINLINE bool boost::gil::equal_n (I1 i1, std::ptrdiff_t n, I2 i2)
+
+template<typename Loc1, typename Loc2>
+GIL_FORCEINLINE bool std::equal (boost::gil::iterator_from_2d < Loc1 > first, boost::gil::iterator_from_2d < Loc1 > last, boost::gil::iterator_from_2d < Loc2 > first2)
+
+ std::equal(I1,I1,I2) with I1 and I2 being a iterator_from_2d
+
+template<typename View1, typename View2>
+GIL_FORCEINLINE bool boost::gil::equal_pixels (const View1 &v1, const View2 &v2)
+
+ std::equal for image views
+
+template<typename View1, typename View2, typename F>
+GIL_FORCEINLINE F boost::gil::transform_pixels (const View1 &src, const View2 &dst, F fun)
+
+ std::transform for image views
+
+template<typename View1, typename View2, typename View3, typename F>
+GIL_FORCEINLINE F boost::gil::transform_pixels (const View1 &src1, const View2 &src2, const View3 &dst, F fun)
+
+ transform_pixels with two sources
+
+template<typename View1, typename View2, typename F>
+GIL_FORCEINLINE F boost::gil::transform_pixel_positions (const View1 &src, const View2 &dst, F fun)
+
+ Like transform_pixels but passes to the function object pixel locators instead of pixel references.
+
+template<typename View1, typename View2, typename View3, typename F>
+GIL_FORCEINLINE F boost::gil::transform_pixel_positions (const View1 &src1, const View2 &src2, const View3 &dst, F fun)
+
+ transform_pixel_positions with two sources
+
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/annotated.html b/doc/html/annotated.html
new file mode 100755
index 000000000..e97dd1584
--- /dev/null
+++ b/doc/html/annotated.html
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+ Generic Image Library : Class List
+
+
+
+
+
+
+
+
+
+
+
+Generic Image Library Class List Here are the classes, structs, unions and interfaces with brief descriptions:
+ alpha_t Alpha
+ any_image Represents a run-time specified image. Note it does NOT model ImageConcept
+ any_image_view Represents a run-time specified image view. Models HasDynamicXStepTypeConcept , HasDynamicYStepTypeConcept , Note that this class does NOT model ImageViewConcept
+ Assignable
+ binary_operation_obj A generic binary operation on views
+Use this class as a convenience superclass when defining an operation for any image views. Many operations have different behavior when the two views are compatible. This class checks for compatibility and invokes apply_compatible(V1,V2) or apply_incompatible(V1,V2) of the subclass. You must provide apply_compatible(V1,V2) method in your subclass, but apply_incompatible(V1,V2) is not required and the default throws std::bad_cast
+ bit_aligned_image1_type Returns the type of a single-channel bit-aligned image given the bit size of its channel and its layout
+ bit_aligned_image2_type Returns the type of a two channel bit-aligned image given the bit size of its channels and its layout
+ bit_aligned_image3_type Returns the type of a three channel bit-aligned image given the bit size of its channels and its layout
+ bit_aligned_image4_type Returns the type of a four channel bit-aligned image given the bit size of its channels and its layout
+ bit_aligned_image5_type Returns the type of a five channel bit-aligned image given the bit size of its channels and its layout
+ bit_aligned_image_type Returns the type of a packed image whose pixels may not be byte aligned. For example, an "rgb222" image is bit-aligned because its pixel spans six bits
+ bit_aligned_pixel_iterator An iterator over non-byte-aligned pixels. Models PixelIteratorConcept , PixelBasedConcept , MemoryBasedIteratorConcept , HasDynamicXStepTypeConcept
+ bit_aligned_pixel_reference Heterogeneous pixel reference corresponding to non-byte-aligned bit range. Models ColorBaseConcept , PixelConcept , PixelBasedConcept
+ black_t Black
+ blue_t Blue
+ byte_to_memunit
+ channel_converter A unary function object converting between channel types
+ channel_converter_unsigned< bits32, bits32f > 32 bit <-> float channel conversion
+ channel_converter_unsigned< bits32f, bits32 > 32 bit <-> float channel conversion
+ channel_converter_unsigned< bits32f, DstChannelV >
+ channel_converter_unsigned< T, T > Converting a channel to itself - identity operation
+ channel_converter_unsigned_impl This is the default implementation. Performance specializatons are provided
+ channel_mapping_type< planar_pixel_reference< ChannelReference, ColorSpace > > Specifies the color space type of a planar pixel reference. Required by PixelBasedConcept
+ channel_multiplier A function object to multiply two channels. result = a * b / max_value
+ channel_multiplier_unsigned This is the default implementation. Performance specializatons are provided
+ channel_multiplier_unsigned< bits16 > Specialization of channel_multiply for 16-bit unsigned channels
+ channel_multiplier_unsigned< bits32f > Specialization of channel_multiply for float 0..1 channels
+ channel_multiplier_unsigned< bits8 > Specialization of channel_multiply for 8-bit unsigned channels
+ channel_traits Traits for channels. Contains the following members:
+ channel_type< planar_pixel_reference< ChannelReference, ColorSpace > > Specifies the color space type of a planar pixel reference. Required by HomogeneousPixelBasedConcept
+ ChannelConcept A channel is the building block of a color. Color is defined as a mixture of primary colors and a channel defines the degree to which each primary color is used in the mixture
+ ChannelConvertibleConcept A channel is convertible to another one if the channel_convert algorithm is defined for the two channels
+ ChannelMappingConcept Channel mapping concept
+ channels_are_compatible Predicate metafunction returning whether two channels are compatible
+Channels are considered compatible if their value types (ignoring constness and references) are the same
+ ChannelsCompatibleConcept Channels are compatible if their associated value types (ignoring constness and references) are the same
+ ChannelValueConcept A channel that supports default construction
+ color_convert_deref_fn Function object that given a source pixel, returns it converted to a given color space and channel depth. Models: PixelDereferenceAdaptorConcept
+ color_converted_view_type Returns the type of a view that does color conversion upon dereferencing its pixels
+ color_converted_view_type< any_image_view< ViewTypes >, DstP > Returns the type of a runtime-specified view, color-converted to a given pixel type with the default coor converter
+ color_converted_view_type< any_image_view< ViewTypes >, DstP, CC > Returns the type of a runtime-specified view, color-converted to a given pixel type with user specified color converter
+ color_element_const_reference_type Specifies the return type of the constant element accessor by color name, get_color(color_base, Color());
+ color_element_reference_type Specifies the return type of the mutable element accessor by color name, get_color(color_base, Color());
+ color_element_type Specifies the type of the element associated with a given color tag
+ color_space_type< planar_pixel_reference< ChannelReference, ColorSpace > > Specifies the color space type of a planar pixel reference. Required by PixelBasedConcept
+ ColorBaseConcept A color base is a container of color elements (such as channels, channel references or channel pointers)
+ ColorBasesCompatibleConcept Two color bases are compatible if they have the same color space and their elements are compatible, semantic-pairwise
+ ColorBaseValueConcept Color base that also has a default-constructor. Refines Regular
+ ColorSpaceConcept Color space type concept
+ ColorSpacesCompatibleConcept Two color spaces are compatible if they are the same
+ contains_color A predicate metafunction determining whether a given color base contains a given color
+ copier_n
+ copier_n< I, iterator_from_2d< OL > > Destination range is delimited by image iterators
+ copier_n< iterator_from_2d< IL >, iterator_from_2d< OL > > Both source and destination ranges are delimited by image iterators
+ copier_n< iterator_from_2d< IL >, O > Source range is delimited by image iterators
+ CopyConstructible
+ cyan_t Cyan
+ dec Operator-- wrapped in a function object
+ default_channel_converter Same as channel_converter , except it takes the destination channel by reference, which allows us to move the templates from the class level to the method level. This is important when invoking it on heterogeneous pixels
+ default_color_converter Class for color-converting one pixel to another
+ default_color_converter_impl Color Convertion function object. To be specialized for every src/dst color space
+ default_color_converter_impl< C, C > When the color space is the same, color convertion performs channel depth conversion
+ default_color_converter_impl< C1, rgba_t > Converting any pixel type to RGBA. Note: Supports homogeneous pixels only
+ default_color_converter_impl< cmyk_t, gray_t > CMYK to Gray
+ default_color_converter_impl< cmyk_t, rgb_t > CMYK to RGB (not the fastest code in the world)
+ default_color_converter_impl< gray_t, cmyk_t > Gray to CMYK
+ default_color_converter_impl< gray_t, rgb_t > Gray to RGB
+ default_color_converter_impl< rgb_t, cmyk_t > RGB to CMYK (not the fastest code in the world)
+ default_color_converter_impl< rgb_t, gray_t > RGB to Gray
+ default_color_converter_impl< rgba_t, C2 > Converting RGBA to any pixel type. Note: Supports homogeneous pixels only
+ default_color_converter_impl< rgba_t, rgba_t > Unfortunately RGBA to RGBA must be explicitly provided - otherwise we get ambiguous specialization error
+ DefaultConstructible
+ deref_base Helper base class for pixel dereference adaptors
+ deref_compose Composes two dereference function objects. Similar to std::unary_compose but needs to pull some typedefs from the component types. Models: PixelDereferenceAdaptorConcept
+ dereference_iterator_adaptor An adaptor over an existing iterator that provides for custom filter on dereferencing the object. Models: IteratorAdaptorConcept , PixelIteratorConcept
+ derived_image_type Constructs a homogeneous image type from a source image type by changing some of the properties.
+Use use_default for the properties of the source image that you want to keep
+ derived_iterator_type Constructs a pixel iterator type from a source pixel iterator type by changing some of the properties.
+Use use_default for the properties of the source view that you want to keep
+ derived_pixel_reference_type Constructs a pixel reference type from a source pixel reference type by changing some of the properties.
+Use use_default for the properties of the source view that you want to keep
+ derived_view_type Constructs an image view type from a source view type by changing some of the properties.
+Use use_default for the properties of the source view that you want to keep
+ devicen_color_t Unnamed color
+ devicen_layout_t Unnamed color layout of up to five channels
+ devicen_t< 1 > Unnamed color space of one channel
+ devicen_t< 2 > Unnamed color space of two channels
+ devicen_t< 3 > Unnamed color space of three channels
+ devicen_t< 4 > Unnamed color space of four channels
+ devicen_t< 5 > Unnamed color space of five channels
+ dynamic_xy_step_transposed_type Returns the type of a transposed view that has a dynamic step along both X and Y
+ dynamic_xy_step_type Returns the type of a view that has a dynamic step along both X and Y
+ element_const_reference_type Specifies the return type of the constant element accessor at_c of a homogeneous color base
+ element_reference_type Specifies the return type of the mutable element accessor at_c of a homogeneous color base
+ element_type Specifies the element type of a homogeneous color base
+ equal_n_fn< boost::gil::iterator_from_2d< Loc >, I2 > Source range is delimited by image iterators
+ equal_n_fn< boost::gil::iterator_from_2d< Loc1 >, boost::gil::iterator_from_2d< Loc2 > > Both source and destination ranges are delimited by image iterators
+ equal_n_fn< const pixel< T, Cs > *, const pixel< T, Cs > * >
+ equal_n_fn< I1, boost::gil::iterator_from_2d< Loc > > Destination range is delimited by image iterators
+ equal_n_fn< planar_pixel_iterator< IC, Cs >, planar_pixel_iterator< IC, Cs > >
+ EqualityComparable
+ gray_color_t Gray
+ green_t Green
+ HasDynamicXStepTypeConcept Concept for iterators, locators and views that can define a type just like the given iterator/locator/view, except it supports runtime specified step along the X navigation
+ HasDynamicYStepTypeConcept Concept for locators and views that can define a type just like the given locator or view, except it supports runtime specified step along the Y navigation
+ HasTransposedTypeConcept Concept for locators and views that can define a type just like the given locator or view, except X and Y is swapped
+ homogeneous_color_base< Element, Layout, 1 > A homogeneous color base holding one color element. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept
+ homogeneous_color_base< Element, Layout, 2 > A homogeneous color base holding two color elements. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept
+ homogeneous_color_base< Element, Layout, 3 > A homogeneous color base holding three color elements. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept
+ homogeneous_color_base< Element, Layout, 4 > A homogeneous color base holding four color elements. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept
+ homogeneous_color_base< Element, Layout, 5 > A homogeneous color base holding five color elements. Models HomogeneousColorBaseConcept or HomogeneousColorBaseValueConcept
+ HomogeneousColorBaseConcept Color base whose elements all have the same type
+ HomogeneousColorBaseValueConcept Homogeneous color base that also has a default constructor. Refines Regular
+ HomogeneousPixelBasedConcept Concept for homogeneous pixel-based GIL constructs
+ HomogeneousPixelConcept Homogeneous pixel concept
+ HomogeneousPixelValueConcept Homogeneous pixel concept that is a Regular type
+ identity Identity taken from SGI STL
+ image Container interface over image view. Models ImageConcept , PixelBasedConcept
+ image_is_basic Basic images must use basic views and std::allocator of char
+ image_type Returns the type of a homogeneous image given the channel type, layout, and whether it operates on planar data
+ image_view A lightweight object that interprets memory as a 2D array of pixels. Models ImageViewConcept ,PixelBasedConcept ,HasDynamicXStepTypeConcept ,HasDynamicYStepTypeConcept ,HasTransposedTypeConcept
+ ImageConcept 2-dimensional image whose value type models PixelValueConcept
+ ImageViewConcept GIL's 2-dimensional view over immutable GIL pixels
+ inc Operator++ wrapped in a function object
+ is_iterator_adaptor Metafunction predicate determining whether the given iterator is a plain one or an adaptor over another iterator. Examples of adaptors are the step iterator and the dereference iterator adaptor
+ is_pixel< bit_aligned_pixel_reference< C, L, M > > Metafunction predicate that flags bit_aligned_pixel_reference as a model of PixelConcept . Required by PixelConcept
+ is_pixel< planar_pixel_reference< ChannelReference, ColorSpace > > Metafunction predicate that flags planar_pixel_reference as a model of PixelConcept . Required by PixelConcept
+ is_planar< planar_pixel_reference< ChannelReference, ColorSpace > > Specifies that planar_pixel_reference represents a planar construct. Required by PixelBasedConcept
+ iterator_add_deref Returns the type (and creates an instance) of an iterator that invokes the given dereference adaptor upon dereferencing
+ iterator_add_deref< dereference_iterator_adaptor< Iterator, PREV_DEREF >, Deref > For dereference iterator adaptors, compose the new function object after the old one
+ iterator_from_2d Provides 1D random-access navigation to the pixels of the image. Models: PixelIteratorConcept , PixelBasedConcept , HasDynamicXStepTypeConcept
+ iterator_is_basic Determines if a given pixel iterator is basic Basic iterators must use gil::pixel (if interleaved), gil::planar_pixel_iterator (if planar) and gil::memory_based_step_iterator (if step). They must use the standard constness rules
+ iterator_is_mutable Metafunction predicate returning whether the given iterator allows for changing its values
+ iterator_is_step Determines if the given iterator has a step that could be set dynamically
+ iterator_type Returns the type of a homogeneous iterator given the channel type, layout, whether it operates on planar data, whether it is a step iterator, and whether it is mutable
+ iterator_type_from_pixel Returns the type of a pixel iterator given the pixel type, whether it operates on planar data, whether it is a step iterator, and whether it is mutable
+ IteratorAdaptorConcept Iterator adaptor is a forward iterator adapting another forward iterator
+ jpeg_read_support Determines whether the given view type is supported for reading
+ jpeg_write_support Determines whether the given view type is supported for writing
+ kth_channel_deref_fn Function object that returns a grayscale reference of the K-th channel (specified as a template parameter) of a given reference. Models: PixelDereferenceAdaptorConcept .
+If the input is a pixel value or constant reference, the function object is immutable. Otherwise it is mutable (and returns non-const reference to the k-th channel)
+ kth_channel_view_type Given a source image view type View, returns the type of an image view over a given channel of View.
+If the channels in the source view are adjacent in memory (such as planar non-step view or single-channel view) then the return view is a single-channel non-step view. If the channels are non-adjacent (interleaved and/or step view) then the return view is a single-channel step view
+ kth_semantic_element_const_reference_type Specifies the return type of the constant semantic_at_c<K>(color_base);
+ kth_semantic_element_reference_type Specifies the return type of the mutable semantic_at_c<K>(color_base);
+ kth_semantic_element_type Specifies the type of the K-th semantic element of a color base
+ layout Represents a color space and ordering of channels in memory
+ locator_is_basic Determines if a given locator is basic. A basic locator is memory-based and has basic x_iterator and y_iterator
+ locator_is_mutable Determines if the given locator is mutable (i.e. its pixels can be changed)
+ locator_is_step_in_x Determines if the given locator has a horizontal step that could be set dynamically
+ locator_is_step_in_y Determines if the given locator has a vertical step that could be set dynamically
+ locator_type Returns the type of a homogeneous locator given the channel type, layout, whether it operates on planar data and whether it has a step horizontally
+ magenta_t Magenta
+ memory_based_2d_locator Memory-based pixel locator. Models: PixelLocatorConcept ,HasDynamicXStepTypeConcept ,HasDynamicYStepTypeConcept ,HasTransposedTypeConcept
+The class takes a step iterator as a parameter. The step iterator provides navigation along the vertical axis while its base iterator provides horizontal navigation
+ memory_based_step_iterator Iterator with dynamically specified step in memory units (bytes or bits). Models StepIteratorConcept , IteratorAdaptorConcept , MemoryBasedIteratorConcept , PixelIteratorConcept , HasDynamicXStepTypeConcept
+ MemoryBasedIteratorConcept Concept of a random-access iterator that can be advanced in memory units (bytes or bits)
+ memunit_step_fn Function object that returns the memory unit distance between two iterators and advances a given iterator a given number of mem units (bytes or bits)
+ Metafunction
+ MutableChannelConcept A channel that allows for modifying its value
+ MutableColorBaseConcept Color base which allows for modifying its elements
+ MutableHomogeneousColorBaseConcept Homogeneous color base that allows for modifying its elements
+ MutableHomogeneousPixelConcept Homogeneous pixel concept that allows for changing its channels
+ MutableImageViewConcept GIL's 2-dimensional view over mutable GIL pixels
+ MutableIteratorAdaptorConcept Iterator adaptor that is mutable
+ MutablePixelConcept Pixel concept that allows for changing its channels
+ MutablePixelIteratorConcept Pixel iterator that allows for changing its pixel
+ MutablePixelLocatorConcept GIL's 2-dimensional locator over mutable GIL pixels
+ MutableRandomAccess2DImageViewConcept 2-dimensional view over mutable values
+ MutableRandomAccess2DLocatorConcept 2-dimensional locator over mutable pixels
+ MutableRandomAccessNDImageViewConcept N-dimensional view over mutable values
+ MutableRandomAccessNDLocatorConcept N-dimensional locator over mutable pixels
+ MutableStepIteratorConcept Step iterator that allows for modifying its current value
+ nth_channel_deref_fn Function object that returns a grayscale reference of the N-th channel of a given reference. Models: PixelDereferenceAdaptorConcept .
+If the input is a pixel value or constant reference, the function object is immutable. Otherwise it is mutable (and returns non-const reference to the n-th channel)
+ nth_channel_view_type Given a source image view type View, returns the type of an image view over a single channel of View
+If the channels in the source view are adjacent in memory (such as planar non-step view or single-channel view) then the return view is a single-channel non-step view. If the channels are non-adjacent (interleaved and/or step view) then the return view is a single-channel step view
+ nth_channel_view_type< any_image_view< ViewTypes > > Given a runtime source image view, returns the type of a runtime image view over a single channel of the source view
+ num_channels Returns the number of channels of a pixel-based GIL construct
+ packed_channel_reference< BitField, FirstBit, NumBits, false > A constant subbyte channel reference whose bit offset is fixed at compile time. Models ChannelConcept
+ packed_channel_reference< BitField, FirstBit, NumBits, true > A mutable subbyte channel reference whose bit offset is fixed at compile time. Models ChannelConcept
+ packed_channel_value The value of a subbyte channel. Models: ChannelValueConcept
+ packed_dynamic_channel_reference< BitField, NumBits, false > Models a constant subbyte channel reference whose bit offset is a runtime parameter. Models ChannelConcept Same as packed_channel_reference, except that the offset is a runtime parameter
+ packed_dynamic_channel_reference< BitField, NumBits, true > Models a mutable subbyte channel reference whose bit offset is a runtime parameter. Models ChannelConcept Same as packed_channel_reference, except that the offset is a runtime parameter
+ packed_image1_type Returns the type of a single-channel image given its bitfield type, the bit size of its channel and its layout
+ packed_image2_type Returns the type of a two channel image given its bitfield type, the bit size of its channels and its layout
+ packed_image3_type Returns the type of a three channel image given its bitfield type, the bit size of its channels and its layout
+ packed_image4_type Returns the type of a four channel image given its bitfield type, the bit size of its channels and its layout
+ packed_image5_type Returns the type of a five channel image given its bitfield type, the bit size of its channels and its layout
+ packed_image_type Returns the type of an interleaved packed image: an image whose channels may not be byte-aligned, but whose pixels are byte aligned
+ packed_pixel Heterogeneous pixel value whose channel references can be constructed from the pixel bitfield and their index. Models ColorBaseValueConcept , PixelValueConcept , PixelBasedConcept Typical use for this is a model of a packed pixel (like 565 RGB)
+ packed_pixel_type Returns the type of a packed pixel given its bitfield type, the bit size of its channels and its layout
+ pixel Represents a pixel value (a container of channels). Models: HomogeneousColorBaseValueConcept , PixelValueConcept , HomogeneousPixelBasedConcept
+ pixel_2d_locator_base Base class for models of PixelLocatorConcept
+Pixel locator is similar to a pixel iterator, but allows for 2D navigation of pixels within an image view. It has a 2D difference_type and supports random access operations like:
+ pixel_is_reference Given a model of a pixel, determines whether the model represents a pixel reference (as opposed to pixel value)
+ pixel_reference_is_basic Determines if a given pixel reference is basic Basic references must use gil::pixel & (if interleaved), gil::planar_pixel_reference (if planar). They must use the standard constness rules
+ pixel_reference_is_mutable Determines if the given pixel reference is mutable (i.e. its channels can be changed)
+ pixel_reference_is_proxy Determines whether the given pixel reference is a proxy class or a native C++ reference
+ pixel_reference_type Returns the type of a homogeneous pixel reference given the channel type, layout, whether it operates on planar data and whether it is mutable
+ pixel_value_type Returns the type of a homogeneous pixel given the channel type and layout
+ PixelBasedConcept Concept for all pixel-based GIL constructs, such as pixels, iterators, locators, views and images whose value type is a pixel
+ PixelConcept Pixel concept - A color base whose elements are channels
+ PixelConvertibleConcept Pixel convertible concept
+ PixelDereferenceAdaptorConcept Represents a unary function object that can be invoked upon dereferencing a pixel iterator
+ PixelIteratorConcept An STL random access traversal iterator over a model of PixelConcept
+ PixelLocatorConcept GIL's 2-dimensional locator over immutable GIL pixels
+ pixels_are_compatible Returns whether two pixels are compatible
+ PixelsCompatibleConcept Concept for pixel compatibility Pixels are compatible if their channels and color space types are compatible. Compatible pixels can be assigned and copy constructed from one another
+ PixelValueConcept Pixel concept that is a Regular type
+ planar_pixel_iterator An iterator over planar pixels. Models HomogeneousColorBaseConcept , PixelIteratorConcept , HomogeneousPixelBasedConcept , MemoryBasedIteratorConcept , HasDynamicXStepTypeConcept
+ planar_pixel_reference A reference proxy to a planar pixel. Models: HomogeneousColorBaseConcept , HomogeneousPixelConcept
+ plus_asymmetric Plus function object whose arguments may be of different type
+ png_read_support Determines whether the given view type is supported for reading
+ png_write_support Determines whether the given view type is supported for writing
+ point2 2D point both axes of which have the same dimension type
+Models: Point2DConcept
+ Point2DConcept 2-dimensional point concept
+ PointNDConcept N-dimensional point concept
+ position_iterator An iterator that remembers its current X,Y position and invokes a function object with it upon dereferencing. Models PixelIteratorConcept . Used to create virtual image views. Models: StepIteratorConcept , PixelIteratorConcept , PixelBasedConcept , HasDynamicXStepTypeConcept
+ RandomAccess2DImageConcept 2-dimensional container of values
+ RandomAccess2DImageViewConcept 2-dimensional view over immutable values
+ RandomAccess2DLocatorConcept 2-dimensional locator over immutable values
+ RandomAccessNDImageConcept N-dimensional container of values
+ RandomAccessNDImageViewConcept N-dimensional view over immutable values
+ RandomAccessNDLocatorConcept N-dimensional locator over immutable values
+ red_t Red
+ Regular
+ rgb_to_luminance_fn Red * .3 + green * .59 + blue * .11 + .5
+ SameType
+ scoped_channel_value A channel adaptor that modifies the range of the source channel. Models: ChannelValueConcept
+ size Returns an MPL integral type specifying the number of elements in a color base
+ std_fill_t Struct to do std::fill
+ step_iterator_adaptor An adaptor over an existing iterator that changes the step unit
+ StepIteratorConcept Step iterator concept
+ Swappable
+ tiff_read_support Determines whether the given view type is supported for reading
+ tiff_write_support Determines whether the given view type is supported for writing
+ type_from_x_iterator Given a pixel iterator defining access to pixels along a row, returns the types of the corresponding built-in step_iterator, xy_locator, image_view
+ type_to_index Returns the index corresponding to the first occurrance of a given given type in
+ variant Represents a concrete instance of a run-time specified type from a set of types
+A concept is typically modeled by a collection of different types. They may be instantiations of a templated type with different template parameters or even completely unrelated types
+ view_is_basic Basic views must be over basic locators
+ view_is_mutable Determines if the given view is mutable (i.e. its pixels can be changed)
+ view_is_step_in_x Determines if the given view has a horizontal step that could be set dynamically
+ view_is_step_in_y Determines if the given view has a vertical step that could be set dynamically
+ view_type Returns the type of a homogeneous view given the channel type, layout, whether it operates on planar data and whether it has a step horizontally
+ view_type_from_pixel Returns the type of a view the pixel type, whether it operates on planar data and whether it has a step horizontally
+ views_are_compatible Returns whether two views are compatible
+ ViewsCompatibleConcept Views are compatible if they have the same color spaces and compatible channel values. Constness and layout are not important for compatibility
+ virtual_2d_locator A 2D locator over a virtual image. Upon dereferencing, invokes a given function object passing it its coordinates. Models: PixelLocatorConcept , HasDynamicXStepTypeConcept , HasDynamicYStepTypeConcept , HasTransposedTypeConcept
+ yellow_t Yellow
+
+Generated on Thu Nov 8 21:53:19 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/any__image_8hpp.html b/doc/html/any__image_8hpp.html
new file mode 100755
index 000000000..24a94ecde
--- /dev/null
+++ b/doc/html/any__image_8hpp.html
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+ Generic Image Library : any_image.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+any_image.hpp File Reference Detailed Description
+Support for run-time instantiated images and image views.
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+
+
+#include "any_image_view.hpp "
+#include "../../image.hpp "
+
+
+Go to the source code of this file.
+
+Namespaces
+namespace boost
+
+namespace boost::gil
+
+namespace boost::gil::detail
+
+Classes
+class any_image
+
+ Represents a run-time specified image. Note it does NOT model ImageConcept . More...
+view, const_view
+Get an image view from a run-time instantiated image
+
+template<typename Types>
+GIL_FORCEINLINE any_image<
+ Types >::view_t boost::gil::view (any_image< Types > &anyImage)
+
+ Returns the non-constant-pixel view of any image. The returned view is any view.
+
+template<typename Types>
+GIL_FORCEINLINE any_image<
+ Types >::const_view_t boost::gil::const_view (const any_image< Types > &anyImage)
+
+ Returns the constant-pixel view of any image. The returned view is any view.
+
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/channel_8hpp.html b/doc/html/channel_8hpp.html
new file mode 100755
index 000000000..31e9665ae
--- /dev/null
+++ b/doc/html/channel_8hpp.html
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+ Generic Image Library : channel.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+channel.hpp File Reference Detailed Description
+Channel utilities.
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+Date: 2005-2007
+ Last updated on May 6, 2007
+Definitions of standard GIL channel models
+
+#include <limits>
+#include <cassert>
+#include <boost/cstdint.hpp>
+#include "gil_config.hpp "
+#include "utilities.hpp "
+
+
+Go to the source code of this file.
+
+Namespaces
+namespace boost
+
+namespace boost::gil
+
+namespace boost::gil::detail
+
+namespace std
+
+Classes
+struct channel_traits
+
+ Traits for channels. Contains the following members:. More...
+struct scoped_channel_value
+
+ A channel adaptor that modifies the range of the source channel. Models: ChannelValueConcept . More...
+class packed_channel_value
+
+ The value of a subbyte channel. Models: ChannelValueConcept . More...
+class packed_channel_reference< BitField, FirstBit, NumBits, false >
+
+ A constant subbyte channel reference whose bit offset is fixed at compile time. Models ChannelConcept . More...
+class packed_channel_reference< BitField, FirstBit, NumBits, true >
+
+ A mutable subbyte channel reference whose bit offset is fixed at compile time. Models ChannelConcept . More...
+class packed_dynamic_channel_reference< BitField, NumBits, false >
+
+ Models a constant subbyte channel reference whose bit offset is a runtime parameter. Models ChannelConcept Same as packed_channel_reference, except that the offset is a runtime parameter. More...
+class packed_dynamic_channel_reference< BitField, NumBits, true >
+
+ Models a mutable subbyte channel reference whose bit offset is a runtime parameter. Models ChannelConcept Same as packed_channel_reference, except that the offset is a runtime parameter. More...
+Typedefs
+
+typedef uint8_t boost::gil::bits8
+
+
+typedef uint16_t boost::gil::bits16
+
+
+typedef uint32_t boost::gil::bits32
+
+
+typedef int8_t boost::gil::bits8s
+
+
+typedef int16_t boost::gil::bits16s
+
+
+typedef int32_t boost::gil::bits32s
+
+
+typedef scoped_channel_value<
+ float, float_zero, float_one > boost::gil::bits32f
+
+Functions
+
+template<typename BF, int FB, int NB, bool M, typename R>
+void std::swap (boost::gil::packed_channel_reference< BF, FB, NB, M > x, R &y)
+
+ swap for packed_channel_reference
+
+template<typename BF, int FB, int NB, bool M>
+void std::swap (typename boost::gil::packed_channel_reference< BF, FB, NB, M >::value_type &x, boost::gil::packed_channel_reference< BF, FB, NB, M > y)
+
+ swap for packed_channel_reference
+
+template<typename BF, int FB, int NB, bool M>
+void std::swap (boost::gil::packed_channel_reference< BF, FB, NB, M > x, boost::gil::packed_channel_reference< BF, FB, NB, M > y)
+
+ swap for packed_channel_reference
+
+template<typename BF, int NB, bool M, typename R>
+void std::swap (boost::gil::packed_dynamic_channel_reference< BF, NB, M > x, R &y)
+
+ swap for packed_dynamic_channel_reference
+
+template<typename BF, int NB, bool M>
+void std::swap (typename boost::gil::packed_dynamic_channel_reference< BF, NB, M >::value_type &x, boost::gil::packed_dynamic_channel_reference< BF, NB, M > y)
+
+ swap for packed_dynamic_channel_reference
+
+template<typename BF, int NB, bool M>
+void std::swap (boost::gil::packed_dynamic_channel_reference< BF, NB, M > x, boost::gil::packed_dynamic_channel_reference< BF, NB, M > y)
+
+ swap for packed_dynamic_channel_reference
+
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/classes.html b/doc/html/classes.html
new file mode 100755
index 000000000..80d07dc99
--- /dev/null
+++ b/doc/html/classes.html
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+ Generic Image Library : Alphabetical List
+
+
+
+
+
+
+
+
+
+
+
+Generic Image Library Class Index
+
+
+devicen_t< 3 > (boost::gil) MutableRandomAccess2DImageViewConcept (boost::gil) alpha_t (boost::gil) devicen_t< 4 > (boost::gil) MutableRandomAccess2DLocatorConcept (boost::gil) any_image (boost::gil) devicen_t< 5 > (boost::gil) MutableRandomAccessNDImageViewConcept (boost::gil) any_image_view (boost::gil) dynamic_xy_step_transposed_type (boost::gil) MutableRandomAccessNDLocatorConcept (boost::gil) Assignable (boost::gil) dynamic_xy_step_type (boost::gil) MutableStepIteratorConcept (boost::gil)
+
+
+binary_operation_obj (boost::gil) element_const_reference_type (boost::gil) nth_channel_deref_fn (boost::gil::detail) bit_aligned_image1_type (boost::gil) element_reference_type (boost::gil) nth_channel_view_type (boost::gil) bit_aligned_image2_type (boost::gil) element_type (boost::gil) nth_channel_view_type< any_image_view< ViewTypes > > (boost::gil) bit_aligned_image3_type (boost::gil) equal_n_fn< boost::gil::iterator_from_2d< Loc >, I2 > (boost::gil::detail) num_channels (boost::gil) bit_aligned_image4_type (boost::gil) equal_n_fn< boost::gil::iterator_from_2d< Loc1 >, boost::gil::iterator_from_2d< Loc2 > > (boost::gil::detail)
+bit_aligned_image5_type (boost::gil) equal_n_fn< const pixel< T, Cs > *, const pixel< T, Cs > * > (boost::gil::detail) packed_channel_reference< BitField, FirstBit, NumBits, false > (boost::gil) bit_aligned_image_type (boost::gil) equal_n_fn< I1, boost::gil::iterator_from_2d< Loc > > (boost::gil::detail) packed_channel_reference< BitField, FirstBit, NumBits, true > (boost::gil) bit_aligned_pixel_iterator (boost::gil) equal_n_fn< planar_pixel_iterator< IC, Cs >, planar_pixel_iterator< IC, Cs > > (boost::gil::detail) packed_channel_value (boost::gil) bit_aligned_pixel_reference (boost::gil) EqualityComparable (boost::gil) packed_dynamic_channel_reference< BitField, NumBits, false > (boost::gil) black_t (boost::gil)
+packed_dynamic_channel_reference< BitField, NumBits, true > (boost::gil) blue_t (boost::gil) gray_color_t (boost::gil) packed_image1_type (boost::gil) byte_to_memunit (boost::gil) green_t (boost::gil) packed_image2_type (boost::gil)
+
+packed_image3_type (boost::gil) channel_converter (boost::gil) HasDynamicXStepTypeConcept (boost::gil) packed_image4_type (boost::gil) channel_converter_unsigned< bits32, bits32f > (boost::gil) HasDynamicYStepTypeConcept (boost::gil) packed_image5_type (boost::gil) channel_converter_unsigned< bits32f, bits32 > (boost::gil) HasTransposedTypeConcept (boost::gil) packed_image_type (boost::gil) channel_converter_unsigned< bits32f, DstChannelV > (boost::gil) homogeneous_color_base< Element, Layout, 1 > (boost::gil::detail) packed_pixel (boost::gil) channel_converter_unsigned< T, T > (boost::gil) homogeneous_color_base< Element, Layout, 2 > (boost::gil::detail) packed_pixel_type (boost::gil) channel_converter_unsigned_impl (boost::gil::detail) homogeneous_color_base< Element, Layout, 3 > (boost::gil::detail) pixel (boost::gil) channel_mapping_type< planar_pixel_reference< ChannelReference, ColorSpace > > (boost::gil) homogeneous_color_base< Element, Layout, 4 > (boost::gil::detail) pixel_2d_locator_base (boost::gil) channel_multiplier (boost::gil) homogeneous_color_base< Element, Layout, 5 > (boost::gil::detail) pixel_is_reference (boost::gil) channel_multiplier_unsigned (boost::gil) HomogeneousColorBaseConcept (boost::gil) pixel_reference_is_basic (boost::gil) channel_multiplier_unsigned< bits16 > (boost::gil) HomogeneousColorBaseValueConcept (boost::gil) pixel_reference_is_mutable (boost::gil) channel_multiplier_unsigned< bits32f > (boost::gil) HomogeneousPixelBasedConcept (boost::gil) pixel_reference_is_proxy (boost::gil) channel_multiplier_unsigned< bits8 > (boost::gil) HomogeneousPixelConcept (boost::gil) pixel_reference_type (boost::gil) channel_traits (boost::gil) HomogeneousPixelValueConcept (boost::gil) pixel_value_type (boost::gil) channel_type< planar_pixel_reference< ChannelReference, ColorSpace > > (boost::gil)
+PixelBasedConcept (boost::gil) ChannelConcept (boost::gil) identity (boost::gil::detail) PixelConcept (boost::gil) ChannelConvertibleConcept (boost::gil) image (boost::gil) PixelConvertibleConcept (boost::gil) ChannelMappingConcept (boost::gil) image_is_basic (boost::gil) PixelDereferenceAdaptorConcept (boost::gil) channels_are_compatible (boost::gil) image_type (boost::gil) PixelIteratorConcept (boost::gil) ChannelsCompatibleConcept (boost::gil) image_view (boost::gil) PixelLocatorConcept (boost::gil) ChannelValueConcept (boost::gil) ImageConcept (boost::gil) pixels_are_compatible (boost::gil) color_convert_deref_fn (boost::gil) ImageViewConcept (boost::gil) PixelsCompatibleConcept (boost::gil) color_converted_view_type (boost::gil) inc (boost::gil::detail) PixelValueConcept (boost::gil) color_converted_view_type< any_image_view< ViewTypes >, DstP > (boost::gil) is_iterator_adaptor (boost::gil) planar_pixel_iterator (boost::gil) color_converted_view_type< any_image_view< ViewTypes >, DstP, CC > (boost::gil) is_pixel< bit_aligned_pixel_reference< C, L, M > > (boost::gil) planar_pixel_reference (boost::gil) color_element_const_reference_type (boost::gil) is_pixel< planar_pixel_reference< ChannelReference, ColorSpace > > (boost::gil) plus_asymmetric (boost::gil::detail) color_element_reference_type (boost::gil) is_planar< planar_pixel_reference< ChannelReference, ColorSpace > > (boost::gil) png_read_support (boost::gil) color_element_type (boost::gil) iterator_add_deref (boost::gil) png_write_support (boost::gil) color_space_type< planar_pixel_reference< ChannelReference, ColorSpace > > (boost::gil) iterator_add_deref< dereference_iterator_adaptor< Iterator, PREV_DEREF >, Deref > (boost::gil) point2 (boost::gil) ColorBaseConcept (boost::gil) iterator_from_2d (boost::gil) Point2DConcept (boost::gil) ColorBasesCompatibleConcept (boost::gil) iterator_is_basic (boost::gil) PointNDConcept (boost::gil) ColorBaseValueConcept (boost::gil) iterator_is_mutable (boost::gil) position_iterator (boost::gil) ColorSpaceConcept (boost::gil) iterator_is_step (boost::gil)
+ColorSpacesCompatibleConcept (boost::gil) iterator_type (boost::gil) RandomAccess2DImageConcept (boost::gil) contains_color (boost::gil) iterator_type_from_pixel (boost::gil) RandomAccess2DImageViewConcept (boost::gil) copier_n (boost::gil::detail) IteratorAdaptorConcept (boost::gil) RandomAccess2DLocatorConcept (boost::gil) copier_n< I, iterator_from_2d< OL > > (boost::gil::detail)
+RandomAccessNDImageConcept (boost::gil) copier_n< iterator_from_2d< IL >, iterator_from_2d< OL > > (boost::gil::detail) jpeg_read_support (boost::gil) RandomAccessNDImageViewConcept (boost::gil) copier_n< iterator_from_2d< IL >, O > (boost::gil::detail) jpeg_write_support (boost::gil) RandomAccessNDLocatorConcept (boost::gil) CopyConstructible (boost::gil)
+red_t (boost::gil) cyan_t (boost::gil) kth_channel_deref_fn (boost::gil::detail) Regular (boost::gil)
+kth_channel_view_type (boost::gil) rgb_to_luminance_fn (boost::gil::detail) dec (boost::gil::detail) kth_semantic_element_const_reference_type (boost::gil)
+default_channel_converter (boost::gil) kth_semantic_element_reference_type (boost::gil) SameType (boost::gil) default_color_converter (boost::gil) kth_semantic_element_type (boost::gil) scoped_channel_value (boost::gil) default_color_converter_impl (boost::gil)
+size (boost::gil) default_color_converter_impl< C, C > (boost::gil) layout (boost::gil) std_fill_t (boost::gil::detail) default_color_converter_impl< C1, rgba_t > (boost::gil) locator_is_basic (boost::gil) step_iterator_adaptor (boost::gil::detail) default_color_converter_impl< cmyk_t, gray_t > (boost::gil) locator_is_mutable (boost::gil) StepIteratorConcept (boost::gil) default_color_converter_impl< cmyk_t, rgb_t > (boost::gil) locator_is_step_in_x (boost::gil) Swappable (boost::gil) default_color_converter_impl< gray_t, cmyk_t > (boost::gil) locator_is_step_in_y (boost::gil)
+default_color_converter_impl< gray_t, rgb_t > (boost::gil) locator_type (boost::gil) tiff_read_support (boost::gil) default_color_converter_impl< rgb_t, cmyk_t > (boost::gil)
+tiff_write_support (boost::gil) default_color_converter_impl< rgb_t, gray_t > (boost::gil) magenta_t (boost::gil) type_from_x_iterator (boost::gil) default_color_converter_impl< rgba_t, C2 > (boost::gil) memory_based_2d_locator (boost::gil) type_to_index (boost::gil::detail) default_color_converter_impl< rgba_t, rgba_t > (boost::gil) memory_based_step_iterator (boost::gil)
+DefaultConstructible (boost::gil) MemoryBasedIteratorConcept (boost::gil) variant (boost::gil) deref_base (boost::gil) memunit_step_fn (boost::gil) view_is_basic (boost::gil) deref_compose (boost::gil) Metafunction (boost::gil) view_is_mutable (boost::gil) dereference_iterator_adaptor (boost::gil) MutableChannelConcept (boost::gil) view_is_step_in_x (boost::gil) derived_image_type (boost::gil) MutableColorBaseConcept (boost::gil) view_is_step_in_y (boost::gil) derived_iterator_type (boost::gil) MutableHomogeneousColorBaseConcept (boost::gil) view_type (boost::gil) derived_pixel_reference_type (boost::gil) MutableHomogeneousPixelConcept (boost::gil) view_type_from_pixel (boost::gil) derived_view_type (boost::gil) MutableImageViewConcept (boost::gil) views_are_compatible (boost::gil) devicen_color_t (boost::gil) MutableIteratorAdaptorConcept (boost::gil) ViewsCompatibleConcept (boost::gil) devicen_layout_t (boost::gil) MutablePixelConcept (boost::gil) virtual_2d_locator (boost::gil) devicen_t< 1 > (boost::gil) MutablePixelIteratorConcept (boost::gil)
+devicen_t< 2 > (boost::gil) MutablePixelLocatorConcept (boost::gil) yellow_t (boost::gil)
+
Generated on Thu Nov 8 21:53:19 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/cmyk_8hpp.html b/doc/html/cmyk_8hpp.html
new file mode 100755
index 000000000..16e83a340
--- /dev/null
+++ b/doc/html/cmyk_8hpp.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ Generic Image Library : cmyk.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+cmyk.hpp File Reference Detailed Description
+Support for CMYK color space and variants.
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+Date: 2005-2007
+ Last updated on September 18, 2006
+
+
+#include "gil_config.hpp "
+#include "metafunctions.hpp "
+#include <boost/mpl/range_c.hpp>
+#include <boost/mpl/vector_c.hpp>
+
+
+Go to the source code of this file.
+
+Namespaces
+namespace boost
+
+namespace boost::gil
+
+Classes
+struct cyan_t
+
+ Cyan. More...
+struct magenta_t
+
+ Magenta. More...
+struct yellow_t
+
+ Yellow. More...
+struct black_t
+
+ Black. More...
+Typedefs
+
+typedef mpl::vector4< cyan_t,
+ magenta_t, yellow_t, black_t > boost::gil::cmyk_t
+
+
+typedef layout< cmyk_t > boost::gil::cmyk_layout_t
+
+Functions
+
+template<typename IC>
+type_from_x_iterator< planar_pixel_iterator<
+ IC, cmyk_t > >::view_t boost::gil::planar_cmyk_view (int width, int height, IC c, IC m, IC y, IC k, std::ptrdiff_t rowsize_in_bytes)
+
+ from raw CMYK planar data
+
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/deprecated_8hpp.html b/doc/html/deprecated_8hpp.html
new file mode 100755
index 000000000..bab0fe8a0
--- /dev/null
+++ b/doc/html/deprecated_8hpp.html
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+ Generic Image Library : deprecated.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+deprecated.hpp File Reference Detailed Description
+Deprecated names This file is provided as a courtesy to ease upgrading GIL client code. Please make sure your code compiles when this file is not included.
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+Date: 2005-2007
+ Last updated on February 12, 2007
+
+
+
+
+Go to the source code of this file.
+
+Defines
+
+#define planar_ptr planar_pixel_iterator
+
+
+#define planar_ref planar_pixel_reference
+
+
+#define membased_2d_locator memory_based_2d_locator
+
+
+#define pixel_step_iterator memory_based_step_iterator
+
+
+#define pixel_image_iterator iterator_from_2d
+
+
+#define equal_channels static_equal
+
+
+#define copy_channels static_copy
+
+
+#define fill_channels static_fill
+
+
+#define generate_channels static_generate
+
+
+#define for_each_channel static_for_each
+
+
+#define transform_channels static_transform
+
+
+#define max_channel static_max
+
+
+#define min_channel static_min
+
+
+#define semantic_channel semantic_at_c
+
+
+#define GIL boost::gil
+
+
+#define ADOBE_GIL_NAMESPACE_BEGIN namespace boost { namespace gil {
+
+
+#define ADOBE_GIL_NAMESPACE_END } }
+
+
+#define ByteAdvancableIteratorConcept MemoryBasedIteratorConcept
+
+
+#define byte_advance memunit_advance
+
+
+#define byte_advanced memunit_advanced
+
+
+#define byte_step memunit_step
+
+
+#define byte_distance memunit_distance
+
+
+#define byte_addressable_step_iterator memory_based_step_iterator
+
+
+#define byte_addressable_2d_locator memory_based_2d_locator
+
+
+#define pix_bytestep pixel_size
+
+Functions
+
+template<typename Img>
+void resize_clobber_image (Img &img, const typename Img::point_t &new_dims)
+
+
+template<typename Img>
+void resize_clobber_image (Img &img, const typename Img::x_coord_t &width, const typename Img::y_coord_t &height)
+
+
+template<typename T>
+T::x_coord_t get_width (const T &a)
+
+
+template<typename T>
+T::y_coord_t get_height (const T &a)
+
+
+template<typename T>
+T::point_t get_dimensions (const T &a)
+
+
+template<typename T>
+std::size_t get_num_channels (const T &a)
+
+
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/device__n_8hpp.html b/doc/html/device__n_8hpp.html
new file mode 100755
index 000000000..a6cf6d4d0
--- /dev/null
+++ b/doc/html/device__n_8hpp.html
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+ Generic Image Library : device_n.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+device_n.hpp File Reference Detailed Description
+Support for color space of N channels and variants.
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+Date: 2005-2007
+ Last updated on March 8, 2006
+
+
+#include "gil_config.hpp "
+#include <boost/type_traits.hpp>
+#include <boost/mpl/range_c.hpp>
+#include <boost/mpl/vector_c.hpp>
+
+
+Go to the source code of this file.
+
+Namespaces
+namespace boost
+
+namespace boost::gil
+
+Classes
+struct devicen_color_t
+
+ unnamed color More...
+struct devicen_t< 1 >
+
+ unnamed color space of one channel More...
+struct devicen_t< 2 >
+
+ unnamed color space of two channels More...
+struct devicen_t< 3 >
+
+ unnamed color space of three channels More...
+struct devicen_t< 4 >
+
+ unnamed color space of four channels More...
+struct devicen_t< 5 >
+
+ unnamed color space of five channels More...
+struct devicen_layout_t
+
+ unnamed color layout of up to five channels More...
+Functions
+
+template<typename IC>
+type_from_x_iterator< planar_pixel_iterator<
+ IC, devicen_t< 2 > > >::view_t boost::gil::planar_devicen_view (int width, int height, IC c0, IC c1, std::ptrdiff_t rowsize_in_bytes)
+
+ from 2-channel planar data
+
+template<typename IC>
+type_from_x_iterator< planar_pixel_iterator<
+ IC, devicen_t< 3 > > >::view_t boost::gil::planar_devicen_view (int width, int height, IC c0, IC c1, IC c2, std::ptrdiff_t rowsize_in_bytes)
+
+ from 3-channel planar data
+
+template<typename IC>
+type_from_x_iterator< planar_pixel_iterator<
+ IC, devicen_t< 4 > > >::view_t boost::gil::planar_devicen_view (int width, int height, IC c0, IC c1, IC c2, IC c3, std::ptrdiff_t rowsize_in_bytes)
+
+ from 4-channel planar data
+
+template<typename IC>
+type_from_x_iterator< planar_pixel_iterator<
+ IC, devicen_t< 5 > > >::view_t boost::gil::planar_devicen_view (int width, int height, IC c0, IC c1, IC c2, IC c3, IC c4, std::ptrdiff_t rowsize_in_bytes)
+
+ from 5-channel planar data
+
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/dir_000000.html b/doc/html/dir_000000.html
new file mode 100755
index 000000000..b5fb183b6
--- /dev/null
+++ b/doc/html/dir_000000.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ Generic Image Library : C:/root/adobe_source_libraries/boost/ Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+boost Directory Reference
+
+
+
+Directories
+directory gil
+
+
+Generated on Thu Nov 8 21:53:20 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/dir_000001.html b/doc/html/dir_000001.html
new file mode 100755
index 000000000..ff012abd1
--- /dev/null
+++ b/doc/html/dir_000001.html
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+ Generic Image Library : C:/root/adobe_source_libraries/boost/gil/ Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+gil Directory Reference
+
+
+Generated on Thu Nov 8 21:53:20 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/dir_000002.html b/doc/html/dir_000002.html
new file mode 100755
index 000000000..cd002eb4f
--- /dev/null
+++ b/doc/html/dir_000002.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+ Generic Image Library : C:/root/adobe_source_libraries/boost/gil/extension/ Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+extension Directory Reference
+
+
+Generated on Thu Nov 8 21:53:20 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/dir_000003.html b/doc/html/dir_000003.html
new file mode 100755
index 000000000..88c470ee6
--- /dev/null
+++ b/doc/html/dir_000003.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+ Generic Image Library : C:/root/adobe_source_libraries/boost/gil/extension/dynamic_image/ Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+dynamic_image Directory Reference
+
+
+Generated on Thu Nov 8 21:53:20 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/dir_000004.html b/doc/html/dir_000004.html
new file mode 100755
index 000000000..3ad23ffde
--- /dev/null
+++ b/doc/html/dir_000004.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+ Generic Image Library : C:/root/adobe_source_libraries/boost/gil/extension/io/ Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+io Directory Reference
+
+
+Generated on Thu Nov 8 21:53:20 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/dirs.html b/doc/html/dirs.html
new file mode 100755
index 000000000..16e822870
--- /dev/null
+++ b/doc/html/dirs.html
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+ Generic Image Library : Directory Hierarchy
+
+
+
+
+
+
+
+
+
+
+
+Generic Image Library Directories This directory hierarchy is sorted roughly, but not completely, alphabetically:
+Generated on Thu Nov 8 21:53:24 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png
new file mode 100755
index 000000000..f0a274bba
Binary files /dev/null and b/doc/html/doxygen.png differ
diff --git a/doc/html/files.html b/doc/html/files.html
new file mode 100755
index 000000000..44fbee919
--- /dev/null
+++ b/doc/html/files.html
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+ Generic Image Library : File Index
+
+
+
+
+
+
+
+
+
+
+
+Generic Image Library File List Here is a list of all documented files with brief descriptions:
+Generated on Thu Nov 8 21:53:16 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/functions.html b/doc/html/functions.html
new file mode 100755
index 000000000..d51797a61
--- /dev/null
+++ b/doc/html/functions.html
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+ Generic Image Library : Class Members
+
+
+
+
+
+
+
+
+
+
+
+
+Here is a list of all documented class members with links to the class documentation for each member:
+
+
+Generated on Thu Nov 8 21:53:19 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html
new file mode 100755
index 000000000..2e123d6cf
--- /dev/null
+++ b/doc/html/functions_func.html
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+ Generic Image Library : Class Members - Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Generated on Thu Nov 8 21:53:19 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/functions_rela.html b/doc/html/functions_rela.html
new file mode 100755
index 000000000..37d07563a
--- /dev/null
+++ b/doc/html/functions_rela.html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ Generic Image Library : Class Members - Related Functions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Generated on Thu Nov 8 21:53:19 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0001.html b/doc/html/g_i_l_0001.html
new file mode 100755
index 000000000..e31298b44
--- /dev/null
+++ b/doc/html/g_i_l_0001.html
@@ -0,0 +1,827 @@
+
+
+
+
+
+
+ Generic Image Library : algorithm.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+algorithm.hpp Go to the documentation of this file. 00001
+ 00002
+ 00003
+ 00004
+ 00005
+ 00006
+ 00007
+ 00008
+ 00009
+ 00010
+ 00011
+ 00012
+ 00013
+ 00014 #ifndef GIL_ALGORITHM_HPP
+ 00015 #define GIL_ALGORITHM_HPP
+ 00016
+ 00017 #include <cassert>
+ 00018 #include <cstddef>
+ 00019 #include <algorithm>
+ 00020 #include <iterator>
+ 00021 #include <memory>
+ 00022 #include "gil_config.hpp "
+ 00023 #include "gil_concept.hpp "
+ 00024 #include "color_base_algorithm.hpp "
+ 00025 #include "image_view.hpp "
+ 00026 #include "image_view_factory.hpp "
+ 00027 #include "bit_aligned_pixel_iterator.hpp "
+ 00028
+ 00037
+ 00038 #ifdef _MSC_VER
+ 00039 #pragma warning(push)
+ 00040 #pragma warning(disable : 4244) // conversion from 'gil::image<V,Alloc>::coord_t' to 'int', possible loss of data (visual studio compiler doesn't realize that the two types are the same)
+ 00041 #endif
+ 00042
+00043 namespace boost { namespace gil {
+ 00044
+ 00045
+ 00046 template <typename ChannelPtr, typename ColorSpace>
+ 00047 struct planar_pixel_iterator;
+ 00048 template <typename Iterator>
+ 00049 class memory_based_step_iterator;
+ 00050 template <typename StepIterator>
+ 00051 class memory_based_2d_locator;
+ 00052
+ 00053
+ 00054 struct error_t {};
+ 00055
+ 00080
+ 00081
+ 00085
+ 00094 template <typename Derived, typename Result=void >
+00095 struct binary_operation_obj {
+ 00096 typedef Result result_type;
+ 00097
+ 00098 template <typename V1, typename V2> GIL_FORCEINLINE
+ 00099 result_type operator()(const std::pair<const V1*,const V2*>& p) const {
+ 00100 return apply(*p.first, *p.second, typename views_are_compatible<V1,V2> ::type());
+ 00101 }
+ 00102
+ 00103 template <typename V1, typename V2> GIL_FORCEINLINE
+ 00104 result_type operator()(const V1& v1, const V2& v2) const {
+ 00105 return apply(v1, v2, typename views_are_compatible<V1,V2> ::type());
+ 00106 }
+ 00107
+ 00108 result_type operator()(const error_t&) const { throw std::bad_cast(); }
+ 00109 private :
+ 00110
+ 00111
+ 00112 template <typename V1, typename V2>
+ 00113 GIL_FORCEINLINE result_type apply(const V1& v1, const V2& v2, mpl::false_) const {
+ 00114 return ((const Derived*)this )->apply_incompatible(v1,v2);
+ 00115 }
+ 00116
+ 00117
+ 00118 template <typename V1, typename V2>
+ 00119 GIL_FORCEINLINE result_type apply(const V1& v1, const V2& v2, mpl::true_) const {
+ 00120 return ((const Derived*)this )->apply_compatible(v1,v2);
+ 00121 }
+ 00122
+ 00123
+ 00124 template <typename V1, typename V2>
+ 00125 GIL_FORCEINLINE result_type apply_incompatible(const V1& v1, const V2& v2) const {
+ 00126 throw std::bad_cast();
+ 00127 }
+ 00128 };
+ 00129 } }
+ 00130
+ 00136
+ 00140
+ 00141 namespace std {
+ 00142
+ 00145 template <typename T, typename Cs>
+ 00146 GIL_FORCEINLINE boost::gil::pixel<T,Cs> *
+00147 copy (boost::gil::pixel<T,Cs> * first, boost::gil::pixel<T,Cs> * last,
+ 00148 boost::gil::pixel<T,Cs> * dst) {
+ 00149 return (boost::gil::pixel<T,Cs> *)std::copy ((unsigned char *)first,(unsigned char *)last, (unsigned char *)dst);
+ 00150 }
+ 00151
+ 00154 template <typename T, typename Cs>
+ 00155 GIL_FORCEINLINE boost::gil::pixel<T,Cs> *
+00156 copy (const boost::gil::pixel<T,Cs> * first, const boost::gil::pixel<T,Cs> * last,
+ 00157 boost::gil::pixel<T,Cs> * dst) {
+ 00158 return (boost::gil::pixel<T,Cs> *)std::copy ((unsigned char *)first,(unsigned char *)last, (unsigned char *)dst);
+ 00159 }
+ 00160 }
+ 00161
+ 00162 namespace boost { namespace gil {
+ 00163 namespace detail {
+ 00164 template <typename I, typename O> struct copy_fn {
+ 00165 GIL_FORCEINLINE I operator()(I first, I last, O dst) const { return std::copy (first,last,dst); }
+ 00166 };
+ 00167 }
+ 00168 } }
+ 00169
+ 00170 namespace std {
+ 00173 template <typename Cs, typename IC1, typename IC2> GIL_FORCEINLINE
+00174 boost::gil::planar_pixel_iterator<IC2,Cs> copy (boost::gil::planar_pixel_iterator<IC1,Cs> first, boost::gil::planar_pixel_iterator<IC1,Cs> last, boost::gil::planar_pixel_iterator<IC2,Cs> dst) {
+ 00175 boost::gil::gil_function_requires<boost::gil::ChannelsCompatibleConcept<typename std::iterator_traits<IC1>::value_type,typename std::iterator_traits<IC2>::value_type> >();
+ 00176 static_for_each(first,last,dst,boost::gil::detail::copy_fn<IC1,IC2>());
+ 00177 return dst+(last-first);
+ 00178 }
+ 00179 }
+ 00180
+ 00181 namespace boost { namespace gil {
+ 00182 namespace detail {
+ 00185 template <typename I, typename O>
+00186 struct copier_n {
+ 00187 GIL_FORCEINLINE void operator()(I src, typename std::iterator_traits<I>::difference_type n, O dst) const { std::copy (src,src+n, dst); }
+ 00188 };
+ 00189
+ 00191 template <typename IL, typename O>
+00192 struct copier_n <iterator_from_2d<IL>,O> {
+ 00193 typedef typename std::iterator_traits<iterator_from_2d<IL> >::difference_type diff_t;
+ 00194 GIL_FORCEINLINE void operator()(iterator_from_2d<IL> src, diff_t n, O dst) const {
+ 00195 gil_function_requires<PixelLocatorConcept<IL> >();
+ 00196 gil_function_requires<MutablePixelIteratorConcept<O> >();
+ 00197 while (n>0) {
+ 00198 typedef typename iterator_from_2d<IL> ::difference_type diff_t;
+ 00199 diff_t l=src.width ()-src.x_pos ();
+ 00200 diff_t numToCopy=(n<l ? n:l);
+ 00201 detail::copy_n(src.x (), numToCopy, dst);
+ 00202 dst+=numToCopy;
+ 00203 src+=numToCopy;
+ 00204 n-=numToCopy;
+ 00205 }
+ 00206 }
+ 00207 };
+ 00208
+ 00210 template <typename I, typename OL>
+00211 struct copier_n <I,iterator_from_2d<OL> > {
+ 00212 typedef typename std::iterator_traits<I>::difference_type diff_t;
+ 00213 GIL_FORCEINLINE void operator()(I src, diff_t n, iterator_from_2d<OL> dst) const {
+ 00214 gil_function_requires<PixelIteratorConcept<I> >();
+ 00215 gil_function_requires<MutablePixelLocatorConcept<OL> >();
+ 00216 while (n>0) {
+ 00217 diff_t l=dst.width ()-dst.x_pos ();
+ 00218 diff_t numToCopy=(n<l ? n:l);
+ 00219 detail::copy_n(src, numToCopy, dst.x ());
+ 00220 dst+=numToCopy;
+ 00221 src+=numToCopy;
+ 00222 n-=numToCopy;
+ 00223 }
+ 00224 }
+ 00225 };
+ 00226
+ 00228 template <typename IL, typename OL>
+00229 struct copier_n <iterator_from_2d<IL>,iterator_from_2d<OL> > {
+ 00230 typedef typename iterator_from_2d<IL> ::difference_type diff_t;
+ 00231 GIL_FORCEINLINE void operator()(iterator_from_2d<IL> src, diff_t n, iterator_from_2d<OL> dst) const {
+ 00232 gil_function_requires<PixelLocatorConcept<IL> >();
+ 00233 gil_function_requires<MutablePixelLocatorConcept<OL> >();
+ 00234 if (src.x_pos ()!=dst.x_pos () || src.width ()!=dst.width ()) {
+ 00235 while (n-->0) {
+ 00236 *dst++=*src++;
+ 00237 }
+ 00238 }
+ 00239 while (n>0) {
+ 00240 diff_t l=dst.width ()-dst.x_pos ();
+ 00241 diff_t numToCopy=(n<l ? n : l);
+ 00242 detail::copy_n(src.x (), numToCopy, dst.x ());
+ 00243 dst+=numToCopy;
+ 00244 src+=numToCopy;
+ 00245 n-=numToCopy;
+ 00246 }
+ 00247 }
+ 00248 };
+ 00249
+ 00250 template <typename SrcIterator, typename DstIterator>
+ 00251 GIL_FORCEINLINE DstIterator copy_with_2d_iterators(SrcIterator first, SrcIterator last, DstIterator dst) {
+ 00252 typedef typename SrcIterator::x_iterator src_x_iterator;
+ 00253 typedef typename DstIterator::x_iterator dst_x_iterator;
+ 00254
+ 00255 typename SrcIterator::difference_type n = last - first;
+ 00256
+ 00257 if (first.is_1d_traversable()) {
+ 00258 if (dst.is_1d_traversable())
+ 00259 copier_n<src_x_iterator,dst_x_iterator> ()(first.x(),n, dst.x());
+ 00260 else
+ 00261 copier_n<src_x_iterator,DstIterator > ()(first.x(),n, dst);
+ 00262 } else {
+ 00263 if (dst.is_1d_traversable())
+ 00264 copier_n<SrcIterator,dst_x_iterator>()(first,n, dst.x());
+ 00265 else
+ 00266 copier_n<SrcIterator,DstIterator>()(first,n,dst);
+ 00267 }
+ 00268 return dst+n;
+ 00269 }
+ 00270
+ 00271 }
+ 00272 } }
+ 00273
+ 00274 namespace std {
+ 00277 template <typename IL, typename OL>
+00278 GIL_FORCEINLINE boost::gil::iterator_from_2d<OL> copy1 (boost::gil::iterator_from_2d<IL> first, boost::gil::iterator_from_2d<IL> last, boost::gil::iterator_from_2d<OL> dst) {
+ 00279 return boost::gil::detail::copy_with_2d_iterators(first,last,dst);
+ 00280 }
+ 00281
+ 00282 }
+ 00283
+ 00284 namespace boost { namespace gil {
+ 00285
+ 00286
+ 00289 template <typename View1, typename View2> GIL_FORCEINLINE
+00290 void copy_pixels (const View1& src, const View2& dst) {
+ 00291 assert(src.dimensions()==dst.dimensions());
+ 00292 detail::copy_with_2d_iterators(src.begin(),src.end(),dst.begin());
+ 00293 }
+ 00294
+ 00300
+ 00306
+ 00307 namespace detail {
+ 00308 template <typename CC>
+ 00309 class copy_and_convert_pixels_fn : public binary_operation_obj<copy_and_convert_pixels_fn<CC> > {
+ 00310 private :
+ 00311 CC _cc;
+ 00312 public :
+ 00313 typedef typename binary_operation_obj<copy_and_convert_pixels_fn<CC> >::result_type result_type;
+ 00314 copy_and_convert_pixels_fn() {}
+ 00315 copy_and_convert_pixels_fn(CC cc_in) : _cc(cc_in) {}
+ 00316
+ 00317 template <typename V1, typename V2> GIL_FORCEINLINE
+ 00318 result_type apply_incompatible(const V1& src, const V2& dst) const {
+ 00319 copy_pixels (color_converted_view<typename V2::value_type>(src,_cc),dst);
+ 00320 }
+ 00321
+ 00322
+ 00323 template <typename V1, typename V2> GIL_FORCEINLINE
+ 00324 result_type apply_compatible(const V1& src, const V2& dst) const {
+ 00325 copy_pixels (src,dst);
+ 00326 }
+ 00327 };
+ 00328 }
+ 00329
+ 00331 template <typename V1, typename V2,typename CC>
+ 00332 GIL_FORCEINLINE
+ 00333 void copy_and_convert_pixels(const V1& src, const V2& dst,CC cc) {
+ 00334 detail::copy_and_convert_pixels_fn<CC> ccp(cc);
+ 00335 ccp(src,dst);
+ 00336 }
+ 00337
+ 00338 struct default_color_converter;
+ 00339
+ 00341 template <typename View1, typename View2>
+ 00342 GIL_FORCEINLINE
+ 00343 void copy_and_convert_pixels(const View1& src, const View2& dst) {
+ 00344 detail::copy_and_convert_pixels_fn<default_color_converter> ccp;
+ 00345 ccp(src,dst);
+ 00346 }
+ 00347
+ 00348 } }
+ 00349
+ 00351
+ 00352
+ 00353
+ 00355
+ 00359
+ 00360
+ 00361 namespace std {
+ 00370 template <typename IL, typename V>
+00371 void fill (boost::gil::iterator_from_2d<IL> first, boost::gil::iterator_from_2d<IL> last, const V& val) {
+ 00372 boost::gil::gil_function_requires<boost::gil::MutablePixelLocatorConcept<IL> >();
+ 00373 if (first.is_1d_traversable ()) {
+ 00374 std::fill (first.x (), last.x (), val);
+ 00375 } else {
+ 00376
+ 00377 std::ptrdiff_t n=last-first;
+ 00378 while (n>0) {
+ 00379 std::ptrdiff_t numToDo=std::min<const std::ptrdiff_t>(n,(std::ptrdiff_t)(first.width()-first.x_pos()));
+ 00380 fill_n(first.x(), numToDo, val);
+ 00381 first+=numToDo;
+ 00382 n-=numToDo;
+ 00383 }
+ 00384 }
+ 00385 }
+ 00386 }
+ 00387
+ 00388 namespace boost { namespace gil {
+ 00389
+ 00390 namespace detail {
+00392 struct std_fill_t {
+ 00393 template <typename It, typename P>
+ 00394 void operator()(It first, It last, const P& p_in) {
+ 00395 std::fill (first,last,p_in);
+ 00396 }
+ 00397 };
+ 00399 template <typename It, typename P>
+ 00400 GIL_FORCEINLINE
+ 00401 void fill_aux(It first, It last, const P& p, mpl::true_) {
+ 00402 static_for_each(first,last,p,std_fill_t ());
+ 00403 }
+ 00405 template <typename It, typename P>
+ 00406 GIL_FORCEINLINE
+ 00407 void fill_aux(It first, It last, const P& p,mpl::false_) {
+ 00408 std::fill (first,last,p);
+ 00409 }
+ 00410 }
+ 00411
+ 00414 template <typename View, typename Value> GIL_FORCEINLINE
+00415 void fill_pixels (const View& img_view, const Value& val) {
+ 00416 if (img_view.is_1d_traversable())
+ 00417 detail::fill_aux(img_view.begin().x(), img_view.end().x(),
+ 00418 val,is_planar<View>());
+ 00419 else
+ 00420 for (std::ptrdiff_t y=0; y<img_view.height(); ++y)
+ 00421 detail::fill_aux(img_view.row_begin(y),img_view.row_end(y),
+ 00422 val,is_planar<View>());
+ 00423 }
+ 00424
+ 00430
+ 00434
+ 00435
+ 00436 namespace detail {
+ 00437
+ 00438 template <typename It> GIL_FORCEINLINE
+ 00439 void destruct_range_impl(It first, It last, mpl::true_) {
+ 00440 typedef typename std::iterator_traits<It>::value_type value_t;
+ 00441 if (boost::has_trivial_destructor<value_t>::value)
+ 00442 return ;
+ 00443 while (first!=last) {
+ 00444 first->~value_t();
+ 00445 ++first;
+ 00446 }
+ 00447 }
+ 00448 template <typename It> GIL_FORCEINLINE
+ 00449 void destruct_range_impl(It first, It last, mpl::false_) {}
+ 00450
+ 00451 template <typename It> GIL_FORCEINLINE
+ 00452 void destruct_range(It first, It last) {
+ 00453 destruct_range_impl(first,last,typename is_pointer<It>::type());
+ 00454 }
+ 00455
+ 00456 struct std_destruct_t {
+ 00457 template <typename It> void operator()(It first, It last) const { destruct_range(first,last); }
+ 00458 };
+ 00459
+ 00461 template <typename It>
+ 00462 GIL_FORCEINLINE
+ 00463 void destruct_aux(It first, It last, mpl::true_) {
+ 00464 static_for_each(first,last,std_destruct_t());
+ 00465 }
+ 00467 template <typename It>
+ 00468 GIL_FORCEINLINE
+ 00469 void destruct_aux(It first, It last, mpl::false_) {
+ 00470 destruct_range(first,last);
+ 00471 }
+ 00472
+ 00473 }
+ 00474
+ 00477 template <typename View> GIL_FORCEINLINE
+00478 void destruct_pixels (const View& img_view) {
+ 00479 if (img_view.is_1d_traversable())
+ 00480 detail::destruct_aux(img_view.begin().x(), img_view.end().x(),
+ 00481 is_planar<View>());
+ 00482 else
+ 00483 for (std::ptrdiff_t y=0; y<img_view.height(); ++y)
+ 00484 detail::destruct_aux(img_view.row_begin(y),img_view.row_end(y),
+ 00485 is_planar<View>());
+ 00486 }
+ 00487
+ 00493
+ 00497
+ 00498
+ 00499 namespace detail {
+ 00500
+ 00503 template <typename It, typename P>
+ 00504 GIL_FORCEINLINE
+ 00505 void uninitialized_fill_aux(It first, It last,
+ 00506 const P& p, mpl::true_) {
+ 00507 int channel=0;
+ 00508 try {
+ 00509 typedef typename std::iterator_traits<It>::value_type pixel_t;
+ 00510 while (channel < num_channels<pixel_t>::value) {
+ 00511 std::uninitialized_fill(dynamic_at_c(first,channel), dynamic_at_c(last,channel),
+ 00512 dynamic_at_c(p,channel));
+ 00513 ++channel;
+ 00514 }
+ 00515 } catch (...) {
+ 00516 for (int c=0; c<channel; ++c)
+ 00517 destruct_range(dynamic_at_c(first,c), dynamic_at_c(last,c));
+ 00518 throw ;
+ 00519 }
+ 00520 }
+ 00521
+ 00524 template <typename It, typename P>
+ 00525 GIL_FORCEINLINE
+ 00526 void uninitialized_fill_aux(It first, It last,
+ 00527 const P& p,mpl::false_) {
+ 00528 std::uninitialized_fill(first,last,p);
+ 00529 }
+ 00530
+ 00531 }
+ 00532
+ 00537 template <typename View, typename Value>
+00538 void uninitialized_fill_pixels (const View& img_view, const Value& val) {
+ 00539 if (img_view.is_1d_traversable())
+ 00540 detail::uninitialized_fill_aux(img_view.begin().x(), img_view.end().x(),
+ 00541 val,is_planar<View>());
+ 00542 else {
+ 00543 typename View::y_coord_t y;
+ 00544 try {
+ 00545 for (y=0; y<img_view.height(); ++y)
+ 00546 detail::uninitialized_fill_aux(img_view.row_begin(y),img_view.row_end(y),
+ 00547 val,is_planar<View>());
+ 00548 } catch (...) {
+ 00549 for (typename View::y_coord_t y0=0; y0<y; ++y0)
+ 00550 detail::destruct_aux(img_view.row_begin(y0),img_view.row_end(y0), is_planar<View>());
+ 00551 throw ;
+ 00552 }
+ 00553 }
+ 00554 }
+ 00555
+ 00561
+ 00565
+ 00566 namespace detail {
+ 00567
+ 00568 template <typename It> GIL_FORCEINLINE
+ 00569 void default_construct_range_impl(It first, It last, mpl::true_) {
+ 00570 typedef typename std::iterator_traits<It>::value_type value_t;
+ 00571 It first1=first;
+ 00572 try {
+ 00573 while (first!=last) {
+ 00574 new (first) value_t();
+ 00575 ++first;
+ 00576 }
+ 00577 } catch (...) {
+ 00578 destruct_range(first1,first);
+ 00579 throw ;
+ 00580 }
+ 00581 }
+ 00582
+ 00583 template <typename It> GIL_FORCEINLINE
+ 00584 void default_construct_range_impl(It first, It last, mpl::false_) {}
+ 00585
+ 00586 template <typename It> GIL_FORCEINLINE
+ 00587 void default_construct_range(It first, It last) { default_construct_range_impl(first, last, typename is_pointer<It>::type()); }
+ 00588
+ 00590 template <typename It>
+ 00591 GIL_FORCEINLINE
+ 00592 void default_construct_aux(It first, It last, mpl::true_) {
+ 00593 int channel=0;
+ 00594 try {
+ 00595 typedef typename std::iterator_traits<It>::value_type pixel_t;
+ 00596 while (channel < num_channels<pixel_t>::value) {
+ 00597 default_construct_range(dynamic_at_c(first,channel), dynamic_at_c(last,channel));
+ 00598 ++channel;
+ 00599 }
+ 00600 } catch (...) {
+ 00601 for (int c=0; c<channel; ++c)
+ 00602 destruct_range(dynamic_at_c(first,c), dynamic_at_c(last,c));
+ 00603 throw ;
+ 00604 }
+ 00605 }
+ 00606
+ 00608 template <typename It>
+ 00609 GIL_FORCEINLINE
+ 00610 void default_construct_aux(It first, It last, mpl::false_) {
+ 00611 default_construct_range(first,last);
+ 00612 }
+ 00613
+ 00614 template <typename View, bool IsPlanar>
+ 00615 struct has_trivial_pixel_constructor : public boost::has_trivial_constructor<typename View::value_type> {};
+ 00616 template <typename View>
+ 00617 struct has_trivial_pixel_constructor<View, true> : public boost::has_trivial_constructor<typename channel_type<View>::type> {};
+ 00618
+ 00619 }
+ 00620
+ 00625 template <typename View>
+00626 void default_construct_pixels (const View& img_view) {
+ 00627 if (detail::has_trivial_pixel_constructor<View, is_planar<View>::value>::value)
+ 00628 return ;
+ 00629
+ 00630 if (img_view.is_1d_traversable())
+ 00631 detail::default_construct_aux(img_view.begin().x(), img_view.end().x(), is_planar<View>());
+ 00632 else {
+ 00633 typename View::y_coord_t y;
+ 00634 try {
+ 00635 for (y=0; y<img_view.height(); ++y)
+ 00636 detail::default_construct_aux(img_view.row_begin(y),img_view.row_end(y), is_planar<View>());
+ 00637 } catch (...) {
+ 00638 for (typename View::y_coord_t y0=0; y0<y; ++y0)
+ 00639 detail::destruct_aux(img_view.row_begin(y0),img_view.row_end(y0), is_planar<View>());
+ 00640 throw ;
+ 00641 }
+ 00642 }
+ 00643 }
+ 00644
+ 00645
+ 00651
+ 00655
+ 00656 namespace detail {
+ 00657
+ 00659 template <typename It1, typename It2>
+ 00660 GIL_FORCEINLINE
+ 00661 void uninitialized_copy_aux(It1 first1, It1 last1,
+ 00662 It2 first2, mpl::true_) {
+ 00663 int channel=0;
+ 00664 try {
+ 00665 typedef typename std::iterator_traits<It1>::value_type pixel_t;
+ 00666 while (channel < num_channels<pixel_t>::value) {
+ 00667 std::uninitialized_copy(dynamic_at_c(first1,channel), dynamic_at_c(last1,channel), dynamic_at_c(first2,channel));
+ 00668 ++channel;
+ 00669 }
+ 00670 } catch (...) {
+ 00671 It2 last2=first2;
+ 00672 std::advance(last2, std::distance(first1,last1));
+ 00673 for (int c=0; c<channel; ++c)
+ 00674 destruct_range(dynamic_at_c(first2,c), dynamic_at_c(last2,c));
+ 00675 throw ;
+ 00676 }
+ 00677 }
+ 00679 template <typename It1, typename It2>
+ 00680 GIL_FORCEINLINE
+ 00681 void uninitialized_copy_aux(It1 first1, It1 last1,
+ 00682 It2 first2,mpl::false_) {
+ 00683 std::uninitialized_copy(first1,last1,first2);
+ 00684 }
+ 00685 }
+ 00686
+ 00691 template <typename View1, typename View2>
+00692 void uninitialized_copy_pixels (const View1& view1, const View2& view2) {
+ 00693 typedef mpl::bool_<is_planar<View1>::value && is_planar<View2>::value> is_planar;
+ 00694 assert(view1.dimensions()==view2.dimensions());
+ 00695 if (view1.is_1d_traversable() && view2.is_1d_traversable())
+ 00696 detail::uninitialized_copy_aux(view1.begin().x(), view1.end().x(),
+ 00697 view2.begin().x(),
+ 00698 is_planar());
+ 00699 else {
+ 00700 typename View1::y_coord_t y;
+ 00701 try {
+ 00702 for (y=0; y<view1.height(); ++y)
+ 00703 detail::uninitialized_copy_aux(view1.row_begin(y), view1.row_end(y),
+ 00704 view2.row_begin(y),
+ 00705 is_planar());
+ 00706 } catch (...) {
+ 00707 for (typename View1::y_coord_t y0=0; y0<y; ++y0)
+ 00708 detail::destruct_aux(view2.row_begin(y0),view2.row_end(y0), is_planar());
+ 00709 throw ;
+ 00710 }
+ 00711 }
+ 00712 }
+ 00713
+ 00719
+ 00728
+ 00730 template <typename V, typename F>
+ 00731 F for_each_pixel(const V& img, F fun) {
+ 00732 if (img.is_1d_traversable()) {
+ 00733 return std::for_each(img.begin().x(), img.end().x(), fun);
+ 00734 } else {
+ 00735 for (std::ptrdiff_t y=0; y<img.height(); ++y)
+ 00736 fun = std::for_each(img.row_begin(y),img.row_end(y),fun);
+ 00737 return fun;
+ 00738 }
+ 00739 }
+ 00740
+ 00744
+ 00746 template <typename View, typename F>
+ 00747 F for_each_pixel_position(const View& img, F fun) {
+ 00748 typename View::xy_locator loc=img.xy_at(0,0);
+ 00749 for (std::ptrdiff_t y=0; y<img.height(); ++y) {
+ 00750 for (std::ptrdiff_t x=0; x<img.width(); ++x, ++loc.x())
+ 00751 fun(loc);
+ 00752 loc.x()-=img.width(); ++loc.y();
+ 00753 }
+ 00754 return fun;
+ 00755 }
+ 00756
+ 00757
+ 00763
+ 00767
+ 00770 template <typename View, typename F>
+00771 void generate_pixels (const View& v, F fun) {
+ 00772 if (v.is_1d_traversable()) {
+ 00773 std::generate(v.begin().x(), v.end().x(), fun);
+ 00774 } else {
+ 00775 for (std::ptrdiff_t y=0; y<v.height(); ++y)
+ 00776 std::generate(v.row_begin(y),v.row_end(y),fun);
+ 00777 }
+ 00778 }
+ 00779
+ 00785
+ 00789
+ 00790 template <typename I1, typename I2> GIL_FORCEINLINE bool equal_n(I1 i1, std::ptrdiff_t n, I2 i2);
+ 00791
+ 00792 namespace detail {
+ 00793
+ 00794 template <typename I1, typename I2>
+ 00795 struct equal_n_fn {
+ 00796 GIL_FORCEINLINE bool operator()(I1 i1, std::ptrdiff_t n, I2 i2) const { return std::equal (i1,i1+n, i2); }
+ 00797 };
+ 00798
+ 00801 template <typename T, typename Cs>
+00802 struct equal_n_fn<const pixel<T,Cs>*, const pixel<T,Cs> *> {
+ 00803 GIL_FORCEINLINE bool operator()(const pixel<T,Cs> * i1, std::ptrdiff_t n, const pixel<T,Cs> * i2) const {
+ 00804 return memcmp(i1, i2, n*sizeof (pixel<T,Cs> ))==0;
+ 00805 }
+ 00806 };
+ 00807 template <typename T, typename Cs>
+ 00808 struct equal_n_fn<pixel<T,Cs>*, pixel<T,Cs> *> : equal_n_fn<const pixel<T,Cs>*, const pixel<T,Cs> *> {};
+ 00809
+ 00813 template <typename IC, typename Cs>
+00814 struct equal_n_fn<planar_pixel_iterator<IC,Cs>, planar_pixel_iterator<IC,Cs> > {
+ 00815 GIL_FORCEINLINE bool operator()(const planar_pixel_iterator<IC,Cs> i1, std::ptrdiff_t n, const planar_pixel_iterator<IC,Cs> i2) const {
+ 00816 ptrdiff_t numBytes=n*sizeof (typename std::iterator_traits<IC>::value_type);
+ 00817
+ 00818 for (std::ptrdiff_t i=0; i<mpl::size<Cs>::value; ++i)
+ 00819 if (memcmp(dynamic_at_c(i1,i), dynamic_at_c(i2,i), numBytes)!=0)
+ 00820 return false ;
+ 00821 return true ;
+ 00822 }
+ 00823 };
+ 00824
+ 00825
+ 00827 template <typename Loc, typename I2>
+00828 struct equal_n_fn<boost::gil::iterator_from_2d<Loc>,I2> {
+ 00829 GIL_FORCEINLINE bool operator()(boost::gil::iterator_from_2d<Loc> i1, std::ptrdiff_t n, I2 i2) const {
+ 00830 gil_function_requires<boost::gil::PixelLocatorConcept<Loc> >();
+ 00831 gil_function_requires<boost::gil::PixelIteratorConcept<I2> >();
+ 00832 while (n>0) {
+ 00833 std::ptrdiff_t num=std::min<const std::ptrdiff_t>(n, i1.width ()-i1.x_pos ());
+ 00834 if (!equal_n(i1.x (), num, i2))
+ 00835 return false ;
+ 00836 i1+=num;
+ 00837 i2+=num;
+ 00838 n-=num;
+ 00839 }
+ 00840 return true ;
+ 00841 }
+ 00842 };
+ 00843
+ 00845 template <typename I1, typename Loc>
+00846 struct equal_n_fn<I1,boost::gil::iterator_from_2d<Loc> > {
+ 00847 GIL_FORCEINLINE bool operator()(I1 i1, std::ptrdiff_t n, boost::gil::iterator_from_2d<Loc> i2) const {
+ 00848 gil_function_requires<boost::gil::PixelIteratorConcept<I1> >();
+ 00849 gil_function_requires<boost::gil::PixelLocatorConcept<Loc> >();
+ 00850 while (n>0) {
+ 00851 std::ptrdiff_t num=std::min<const std::ptrdiff_t>(n,i2.width ()-i2.x_pos ());
+ 00852 if (!equal_n(i1, num, i2.x ()))
+ 00853 return false ;
+ 00854 i1+=num;
+ 00855 i2+=num;
+ 00856 n-=num;
+ 00857 }
+ 00858 return true ;
+ 00859 }
+ 00860 };
+ 00861
+ 00863 template <typename Loc1, typename Loc2>
+00864 struct equal_n_fn<boost::gil::iterator_from_2d<Loc1>,boost::gil::iterator_from_2d<Loc2> > {
+ 00865 GIL_FORCEINLINE bool operator()(boost::gil::iterator_from_2d<Loc1> i1, std::ptrdiff_t n, boost::gil::iterator_from_2d<Loc2> i2) const {
+ 00866 gil_function_requires<boost::gil::PixelLocatorConcept<Loc1> >();
+ 00867 gil_function_requires<boost::gil::PixelLocatorConcept<Loc2> >();
+ 00868 if (i1.x_pos ()!=i2.x_pos () || i1.width ()!=i2.width ()) {
+ 00869 while (n-->0) {
+ 00870 if (*i1++!=*i2++) return false ;
+ 00871 }
+ 00872 }
+ 00873 while (n>0) {
+ 00874 std::ptrdiff_t num=std::min<const std::ptrdiff_t>(n,i2.width ()-i2.x_pos ());
+ 00875 if (!equal_n(i1.x (), num, i2.x ()))
+ 00876 return false ;
+ 00877 i1+=num;
+ 00878 i2+=num;
+ 00879 n-=num;
+ 00880 }
+ 00881 return true ;
+ 00882 }
+ 00883 };
+ 00884 }
+ 00885
+ 00886 template <typename I1, typename I2> GIL_FORCEINLINE
+ 00887 bool equal_n(I1 i1, std::ptrdiff_t n, I2 i2) {
+ 00888 return detail::equal_n_fn<I1,I2>()(i1,n,i2);
+ 00889 }
+ 00890 } }
+ 00891
+ 00892 namespace std {
+ 00904 template <typename Loc1, typename Loc2> GIL_FORCEINLINE
+00905 bool equal (boost::gil::iterator_from_2d<Loc1> first, boost::gil::iterator_from_2d<Loc1> last, boost::gil::iterator_from_2d<Loc2> first2) {
+ 00906 boost::gil::gil_function_requires<boost::gil::PixelLocatorConcept<Loc1> >();
+ 00907 boost::gil::gil_function_requires<boost::gil::PixelLocatorConcept<Loc2> >();
+ 00908 std::ptrdiff_t n=last-first;
+ 00909 if (first.is_1d_traversable()) {
+ 00910 if (first2.is_1d_traversable ())
+ 00911 return boost::gil::detail::equal_n_fn<typename Loc1::x_iterator,typename Loc2::x_iterator>()(first.x(),n, first2.x ());
+ 00912 else
+ 00913 return boost::gil::detail::equal_n_fn<typename Loc1::x_iterator,boost::gil::iterator_from_2d<Loc2> >()(first.x(),n, first2);
+ 00914 } else {
+ 00915 if (first2.is_1d_traversable ())
+ 00916 return boost::gil::detail::equal_n_fn<boost::gil::iterator_from_2d<Loc1>,typename Loc2::x_iterator>()(first,n, first2.x ());
+ 00917 else
+ 00918 return boost::gil::detail::equal_n_fn<boost::gil::iterator_from_2d<Loc1>,boost::gil::iterator_from_2d<Loc2> >()(first,n,first2);
+ 00919 }
+ 00920 }
+ 00921 }
+ 00922
+ 00923 namespace boost { namespace gil {
+ 00924
+ 00927 template <typename View1, typename View2> GIL_FORCEINLINE
+00928 bool equal_pixels (const View1& v1, const View2& v2) {
+ 00929 assert(v1.dimensions()==v2.dimensions());
+ 00930 return std::equal (v1.begin(),v1.end(),v2.begin());
+ 00931 }
+ 00932
+ 00938
+ 00942
+ 00945 template <typename View1, typename View2, typename F> GIL_FORCEINLINE
+00946 F transform_pixels (const View1& src,const View2& dst, F fun) {
+ 00947 assert(src.dimensions()==dst.dimensions());
+ 00948 for (std::ptrdiff_t y=0; y<src.height(); ++y) {
+ 00949 typename View1::x_iterator srcIt=src.row_begin(y);
+ 00950 typename View2::x_iterator dstIt=dst.row_begin(y);
+ 00951 for (std::ptrdiff_t x=0; x<src.width(); ++x)
+ 00952 dstIt[x]=fun(srcIt[x]);
+ 00953 }
+ 00954 return fun;
+ 00955 }
+ 00956
+ 00959 template <typename View1, typename View2, typename View3, typename F> GIL_FORCEINLINE
+00960 F transform_pixels (const View1& src1, const View2& src2,const View3& dst, F fun) {
+ 00961 for (std::ptrdiff_t y=0; y<dst.height(); ++y) {
+ 00962 typename View1::x_iterator srcIt1=src1.row_begin(y);
+ 00963 typename View2::x_iterator srcIt2=src2.row_begin(y);
+ 00964 typename View3::x_iterator dstIt=dst.row_begin(y);
+ 00965 for (std::ptrdiff_t x=0; x<dst.width(); ++x)
+ 00966 dstIt[x]=fun(srcIt1[x],srcIt2[x]);
+ 00967 }
+ 00968 return fun;
+ 00969 }
+ 00970
+ 00974
+ 00977 template <typename View1, typename View2, typename F> GIL_FORCEINLINE
+00978 F transform_pixel_positions (const View1& src,const View2& dst, F fun) {
+ 00979 assert(src.dimensions()==dst.dimensions());
+ 00980 typename View1::xy_locator loc=src.xy_at(0,0);
+ 00981 for (std::ptrdiff_t y=0; y<src.height(); ++y) {
+ 00982 typename View2::x_iterator dstIt=dst.row_begin(y);
+ 00983 for (std::ptrdiff_t x=0; x<src.width(); ++x, ++loc.x())
+ 00984 dstIt[x]=fun(loc);
+ 00985 loc.x()-=src.width(); ++loc.y();
+ 00986 }
+ 00987 return fun;
+ 00988 }
+ 00989
+ 00992 template <typename View1, typename View2, typename View3, typename F> GIL_FORCEINLINE
+00993 F transform_pixel_positions (const View1& src1,const View2& src2,const View3& dst, F fun) {
+ 00994 assert(src1.dimensions()==dst.dimensions());
+ 00995 assert(src2.dimensions()==dst.dimensions());
+ 00996 typename View1::xy_locator loc1=src1.xy_at(0,0);
+ 00997 typename View2::xy_locator loc2=src2.xy_at(0,0);
+ 00998 for (std::ptrdiff_t y=0; y<src1.height(); ++y) {
+ 00999 typename View3::x_iterator dstIt=dst.row_begin(y);
+ 01000 for (std::ptrdiff_t x=0; x<src1.width(); ++x, ++loc1.x(), ++loc2.x())
+ 01001 dstIt[x]=fun(loc1,loc2);
+ 01002 loc1.x()-=src1.width(); ++loc1.y();
+ 01003 loc2.x()-=src2.width(); ++loc2.y();
+ 01004 }
+ 01005 return fun;
+ 01006 }
+ 01007
+ 01008 } }
+ 01009
+ 01010 #ifdef _MSC_VER
+ 01011 #pragma warning(pop)
+ 01012 #endif
+ 01013
+ 01014 #endif
+Generated on Thu Nov 8 21:53:16 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0001.png b/doc/html/g_i_l_0001.png
new file mode 100755
index 000000000..7ffac7e6f
Binary files /dev/null and b/doc/html/g_i_l_0001.png differ
diff --git a/doc/html/g_i_l_0002.html b/doc/html/g_i_l_0002.html
new file mode 100755
index 000000000..626cb4e49
--- /dev/null
+++ b/doc/html/g_i_l_0002.html
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+ Generic Image Library : any_image.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+any_image.hpp Go to the documentation of this file. 00001
+ 00002
+ 00003
+ 00004
+ 00005
+ 00006
+ 00007
+ 00008
+ 00009
+ 00010
+ 00011
+ 00012 #ifndef GIL_DYNAMICIMAGE_ANY_IMAGE_HPP
+ 00013 #define GIL_DYNAMICIMAGE_ANY_IMAGE_HPP
+ 00014
+ 00023
+ 00024 #include "any_image_view.hpp "
+ 00025 #include "../../image.hpp"
+ 00026
+ 00027 #ifdef _MSC_VER
+ 00028 #pragma warning(push)
+ 00029 #pragma warning(disable : 4244) // conversion from 'std::ptrdiff_t' to 'int', possible loss of data. even if we static-assert the two types are the same (on visual studio 8)
+ 00030 #endif
+ 00031
+ 00032 namespace boost { namespace gil {
+ 00033
+ 00034 namespace detail {
+ 00035 template <typename T> struct get_view_t { typedef typename T::view_t type; };
+ 00036 template <typename Images> struct images_get_views_t : public mpl::transform<Images, get_view_t<mpl::_1> > {};
+ 00037
+ 00038 template <typename T> struct get_const_view_t { typedef typename T::const_view_t type; };
+ 00039 template <typename Images> struct images_get_const_views_t : public mpl::transform<Images, get_const_view_t<mpl::_1> > {};
+ 00040
+ 00041 struct recreate_image_fnobj {
+ 00042 typedef void result_type;
+ 00043 const point2<std::ptrdiff_t>& _dimensions;
+ 00044 unsigned _alignment;
+ 00045
+ 00046 recreate_image_fnobj(const point2<std::ptrdiff_t>& dims, unsigned alignment) : _dimensions(dims), _alignment(alignment) {}
+ 00047 template <typename Image> result_type operator()(Image& img) const { img.recreate(_dimensions,_alignment); }
+ 00048 };
+ 00049
+ 00050 template <typename AnyView>
+ 00051 struct any_image_get_view {
+ 00052 typedef AnyView result_type;
+ 00053 template <typename Image> result_type operator()( Image& img) const { return result_type(view (img)); }
+ 00054 };
+ 00055
+ 00056 template <typename AnyConstView>
+ 00057 struct any_image_get_const_view {
+ 00058 typedef AnyConstView result_type;
+ 00059 template <typename Image> result_type operator()(const Image& img) const { return result_type(const_view (img)); }
+ 00060 };
+ 00061 }
+ 00062
+ 00073 template <typename ImageTypes>
+00074 class any_image : public variant <ImageTypes> {
+ 00075 typedef variant<ImageTypes> parent_t ;
+ 00076 public :
+ 00077 typedef any_image_view<typename detail::images_get_const_views_t<ImageTypes> ::type> const_view_t ;
+ 00078 typedef any_image_view<typename detail::images_get_views_t<ImageTypes> ::type> view_t ;
+ 00079 typedef std::ptrdiff_t x_coord_t;
+ 00080 typedef std::ptrdiff_t y_coord_t;
+ 00081 typedef point2<std::ptrdiff_t> point_t ;
+ 00082
+ 00083 any_image () : parent_t () {}
+ 00084 template <typename T> explicit any_image (const T& obj) : parent_t (obj) {}
+ 00085 template <typename T> explicit any_image (T& obj, bool do_swap) : parent_t (obj,do_swap) {}
+ 00086 any_image (const any_image & v) : parent_t ((const parent_t &)v) {}
+ 00087
+ 00088 template <typename T> any_image & operator=(const T& obj) { parent_t::operator=(obj); return *this ; }
+ 00089 any_image & operator=(const any_image & v) { parent_t::operator=((const parent_t &)v); return *this ;}
+ 00090
+ 00091 void recreate(const point_t & dims, unsigned alignment=1) { apply_operation (*this ,detail::recreate_image_fnobj(dims,alignment)); }
+ 00092 void recreate(x_coord_t width, y_coord_t height, unsigned alignment=1) { recreate(point2<std::ptrdiff_t> (width,height),alignment); }
+ 00093
+ 00094 std::size_t num_channels () const { return apply_operation (*this , detail::any_type_get_num_channels()); }
+ 00095 point_t dimensions() const { return apply_operation (*this , detail::any_type_get_dimensions()); }
+ 00096 x_coord_t width() const { return dimensions().x ; }
+ 00097 y_coord_t height() const { return dimensions().y ; }
+ 00098 };
+ 00099
+ 00103
+ 00105
+ 00107 template <typename Types> GIL_FORCEINLINE
+00108 typename any_image<Types> ::view_t view (any_image<Types> & anyImage) {
+ 00109 return apply_operation (anyImage, detail::any_image_get_view<typename any_image<Types> ::view_t>());
+ 00110 }
+ 00111
+ 00113 template <typename Types> GIL_FORCEINLINE
+00114 typename any_image<Types> ::const_view_t const_view (const any_image<Types> & anyImage) {
+ 00115 return apply_operation (anyImage, detail::any_image_get_const_view<typename any_image<Types> ::const_view_t>());
+ 00116 }
+ 00118
+ 00119 } }
+ 00120
+ 00121 #ifdef _MSC_VER
+ 00122 #pragma warning(pop)
+ 00123 #endif
+ 00124
+ 00125 #endif
+Generated on Thu Nov 8 21:53:16 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0002.png b/doc/html/g_i_l_0002.png
new file mode 100755
index 000000000..86781ccf3
Binary files /dev/null and b/doc/html/g_i_l_0002.png differ
diff --git a/doc/html/g_i_l_0003.html b/doc/html/g_i_l_0003.html
new file mode 100755
index 000000000..d2c56268e
--- /dev/null
+++ b/doc/html/g_i_l_0003.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+ Generic Image Library : any_image_view.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+any_image_view.hpp Go to the documentation of this file. 00001
+ 00002
+ 00003
+ 00004
+ 00005
+ 00006
+ 00007
+ 00008
+ 00009
+ 00010
+ 00011
+ 00012
+ 00013 #ifndef GIL_DYNAMICIMAGE_ANY_IMAGEVIEW_HPP
+ 00014 #define GIL_DYNAMICIMAGE_ANY_IMAGEVIEW_HPP
+ 00015
+ 00024
+ 00025 #include "variant.hpp "
+ 00026 #include "../../image_view.hpp"
+ 00027 #include "../../image.hpp"
+ 00028
+ 00029 namespace boost { namespace gil {
+ 00030
+ 00031 namespace detail {
+ 00032 template <typename View> struct get_const_t { typedef typename View::const_t type; };
+ 00033 template <typename Views> struct views_get_const_t : public mpl::transform<Views, get_const_t<mpl::_1> > {};
+ 00034 }
+ 00035 template <typename View> struct dynamic_xy_step_type;
+ 00036 template <typename View> struct dynamic_xy_step_transposed_type;
+ 00037
+ 00038 namespace detail {
+ 00039 struct any_type_get_num_channels {
+ 00040 typedef int result_type;
+ 00041 template <typename T> result_type operator()(const T& v) const { return num_channels<T>::value; }
+ 00042 };
+ 00043 struct any_type_get_dimensions {
+ 00044 typedef point2<std::ptrdiff_t> result_type;
+ 00045 template <typename T> result_type operator()(const T& v) const { return v.dimensions(); }
+ 00046 };
+ 00047 }
+ 00048
+ 00063 template <typename ImageViewTypes>
+00064 class any_image_view : public variant <ImageViewTypes> {
+ 00065 typedef variant<ImageViewTypes> parent_t ;
+ 00066 public :
+ 00067 typedef any_image_view<typename detail::views_get_const_t<ImageViewTypes> ::type> const_t ;
+ 00068 typedef std::ptrdiff_t x_coord_t;
+ 00069 typedef std::ptrdiff_t y_coord_t;
+ 00070 typedef point2<std::ptrdiff_t> point_t ;
+ 00071
+ 00072 any_image_view () : parent_t () {}
+ 00073 template <typename T> explicit any_image_view (const T& obj) : parent_t (obj) {}
+ 00074 any_image_view (const any_image_view & v) : parent_t ((const parent_t &)v) {}
+ 00075
+ 00076 template <typename T> any_image_view & operator=(const T& obj) { parent_t::operator=(obj); return *this ; }
+ 00077 any_image_view & operator=(const any_image_view & v) { parent_t::operator=((const parent_t &)v); return *this ;}
+ 00078
+ 00079 std::size_t num_channels () const { return apply_operation (*this , detail::any_type_get_num_channels()); }
+ 00080 point_t dimensions() const { return apply_operation (*this , detail::any_type_get_dimensions()); }
+ 00081 x_coord_t width() const { return dimensions().x ; }
+ 00082 y_coord_t height() const { return dimensions().y ; }
+ 00083 };
+ 00084
+ 00086
+ 00088
+ 00089 template <typename IVTypes>
+ 00090 struct dynamic_x_step_type<any_image_view<IVTypes> > {
+ 00091 typedef any_image_view<typename mpl::transform<IVTypes, dynamic_x_step_type<mpl::_1> >::type> type;
+ 00092 };
+ 00093
+ 00095
+ 00097
+ 00098 template <typename IVTypes>
+ 00099 struct dynamic_y_step_type<any_image_view<IVTypes> > {
+ 00100 typedef any_image_view<typename mpl::transform<IVTypes, dynamic_y_step_type<mpl::_1> >::type> type;
+ 00101 };
+ 00102
+ 00103 template <typename IVTypes>
+ 00104 struct dynamic_xy_step_type<any_image_view<IVTypes> > {
+ 00105 typedef any_image_view<typename mpl::transform<IVTypes, dynamic_xy_step_type<mpl::_1> >::type> type;
+ 00106 };
+ 00107
+ 00108 template <typename IVTypes>
+ 00109 struct dynamic_xy_step_transposed_type<any_image_view<IVTypes> > {
+ 00110 typedef any_image_view<typename mpl::transform<IVTypes, dynamic_xy_step_transposed_type<mpl::_1> >::type> type;
+ 00111 };
+ 00112
+ 00113 } }
+ 00114
+ 00115 #endif
+Generated on Thu Nov 8 21:53:16 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0003.png b/doc/html/g_i_l_0003.png
new file mode 100755
index 000000000..0caf16a76
Binary files /dev/null and b/doc/html/g_i_l_0003.png differ
diff --git a/doc/html/g_i_l_0004.html b/doc/html/g_i_l_0004.html
new file mode 100755
index 000000000..eb8534c71
--- /dev/null
+++ b/doc/html/g_i_l_0004.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+ Generic Image Library : any_image_view.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+any_image_view.hpp File Reference Detailed Description
+Support for run-time instantiated image view.
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+
+
+#include "variant.hpp "
+#include "../../image_view.hpp "
+#include "../../image.hpp "
+
+
+Go to the source code of this file.
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0004.png b/doc/html/g_i_l_0004.png
new file mode 100755
index 000000000..899e053b3
Binary files /dev/null and b/doc/html/g_i_l_0004.png differ
diff --git a/doc/html/g_i_l_0005.html b/doc/html/g_i_l_0005.html
new file mode 100755
index 000000000..3fb84137a
--- /dev/null
+++ b/doc/html/g_i_l_0005.html
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+ Generic Image Library : apply_operation.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+apply_operation.hpp Go to the documentation of this file. 00001
+ 00002
+ 00003
+ 00004
+ 00005
+ 00006
+ 00007
+ 00008
+ 00009
+ 00010
+ 00011
+ 00012
+ 00013 #ifndef GIL_APPLY_OPERATION_HPP
+ 00014 #define GIL_APPLY_OPERATION_HPP
+ 00015
+ 00024
+ 00025 #include "apply_operation_base.hpp "
+ 00026 #include "variant.hpp "
+ 00027
+ 00028 #ifndef GIL_REDUCE_CODE_BLOAT
+ 00029
+ 00030 namespace boost { namespace gil {
+ 00031
+ 00034 template <typename Types, typename UnaryOp> GIL_FORCEINLINE
+00035 typename UnaryOp::result_type apply_operation (variant<Types> & arg, UnaryOp op) {
+ 00036 return apply_operation_base<Types>(arg._bits , arg._index ,op);
+ 00037 }
+ 00038
+ 00041 template <typename Types, typename UnaryOp> GIL_FORCEINLINE
+00042 typename UnaryOp::result_type apply_operation (const variant<Types> & arg, UnaryOp op) {
+ 00043 return apply_operation_basec<Types>(arg._bits , arg._index ,op);
+ 00044 }
+ 00045
+ 00048 template <typename Types1, typename Types2, typename BinaryOp> GIL_FORCEINLINE
+00049 typename BinaryOp::result_type apply_operation (const variant<Types1> & arg1, const variant<Types2> & arg2, BinaryOp op) {
+ 00050 return apply_operation_base<Types1,Types2>(arg1._bits , arg1._index , arg2._bits , arg2._index , op);
+ 00051 }
+ 00052
+ 00053 } }
+ 00054
+ 00055 #else
+ 00056
+ 00057 #include "reduce.hpp "
+ 00058
+ 00059 #endif
+ 00060
+ 00061 #endif
+Generated on Thu Nov 8 21:53:16 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0005.png b/doc/html/g_i_l_0005.png
new file mode 100755
index 000000000..1144ee77e
Binary files /dev/null and b/doc/html/g_i_l_0005.png differ
diff --git a/doc/html/g_i_l_0006.html b/doc/html/g_i_l_0006.html
new file mode 100755
index 000000000..b59162aa7
--- /dev/null
+++ b/doc/html/g_i_l_0006.html
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+ Generic Image Library : apply_operation.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+apply_operation.hpp File Reference Detailed Description
+Implements apply_operation for variants. Optionally performs type reduction.
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+Date: 2005-2007
+ Last updated on May 4, 2006
+
+
+#include "apply_operation_base.hpp "
+#include "variant.hpp "
+
+
+Go to the source code of this file.
+
+Namespaces
+namespace boost
+
+namespace boost::gil
+
+Functions
+
+template<typename Types, typename UnaryOp>
+GIL_FORCEINLINE UnaryOp::result_type boost::gil::apply_operation (variant< Types > &arg, UnaryOp op)
+
+ Invokes a generic mutable operation (represented as a unary function object) on a variant.
+
+template<typename Types, typename UnaryOp>
+GIL_FORCEINLINE UnaryOp::result_type boost::gil::apply_operation (const variant< Types > &arg, UnaryOp op)
+
+ Invokes a generic constant operation (represented as a unary function object) on a variant.
+
+template<typename Types1, typename Types2, typename BinaryOp>
+GIL_FORCEINLINE BinaryOp::result_type boost::gil::apply_operation (const variant< Types1 > &arg1, const variant< Types2 > &arg2, BinaryOp op)
+
+ Invokes a generic constant operation (represented as a binary function object) on two variants.
+
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0006.png b/doc/html/g_i_l_0006.png
new file mode 100755
index 000000000..6f3f11540
Binary files /dev/null and b/doc/html/g_i_l_0006.png differ
diff --git a/doc/html/g_i_l_0007.html b/doc/html/g_i_l_0007.html
new file mode 100755
index 000000000..df9be73a8
--- /dev/null
+++ b/doc/html/g_i_l_0007.html
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+ Generic Image Library : apply_operation_base.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+apply_operation_base.hpp Go to the documentation of this file. 00001
+ 00002
+ 00003
+ 00004
+ 00005
+ 00006
+ 00007
+ 00008
+ 00009
+ 00010
+ 00011
+ 00012
+ 00013 #ifndef GIL_APPLY_OPERATION_BASE_HPP
+ 00014 #define GIL_APPLY_OPERATION_BASE_HPP
+ 00015
+ 00016 #include "../../gil_config.hpp"
+ 00017 #include "../../utilities.hpp"
+ 00018 #include <boost/mpl/begin.hpp>
+ 00019 #include <boost/mpl/next.hpp>
+ 00020 #include <boost/mpl/deref.hpp>
+ 00021 #include <boost/mpl/size.hpp>
+ 00022 #include <boost/preprocessor/repeat.hpp>
+ 00023
+ 00033
+ 00034 namespace boost { namespace gil {
+ 00035
+ 00036
+ 00037
+ 00038
+ 00039
+ 00040
+ 00041
+ 00042
+ 00043
+ 00044
+ 00045
+ 00046
+ 00047
+ 00048
+ 00049
+ 00050
+ 00051
+ 00052
+ 00053
+ 00054
+ 00055
+ 00056
+ 00057
+ 00058
+ 00059
+ 00060
+ 00061
+ 00062
+ 00063
+ 00064
+ 00065
+ 00066
+ 00067
+ 00068 #define GIL_FWD_TYPEDEFS(z, N, text) T##N; typedef typename mpl::next<T##N>::type
+ 00069 #define GIL_FWD_CASE(z, N, SUM) case N: return op(*gil_reinterpret_cast<typename mpl::deref<T##N>::type*>(&bits));
+ 00070 #define GIL_FWD_CONST_CASE(z, N, SUM) case N: return op(*gil_reinterpret_cast_c<const typename mpl::deref<T##N>::type*>(&bits));
+ 00071
+ 00072 #define GIL_APPLY_FWD_OP(z, N, text) \
+ 00073 template <> struct apply_operation_fwd_fn<BOOST_PP_ADD(N,1)> { \
+ 00074 template <typename Types, typename Bits, typename UnaryOp> \
+ 00075 typename UnaryOp::result_type apply(Bits& bits, std::size_t index, UnaryOp op) const { \
+ 00076 typedef typename mpl::begin<Types>::type \
+ 00077 BOOST_PP_REPEAT(N, GIL_FWD_TYPEDEFS, BOOST_PP_EMPTY) \
+ 00078 T##N; \
+ 00079 switch (index) { \
+ 00080 BOOST_PP_REPEAT(BOOST_PP_ADD(N,1), GIL_FWD_CASE, BOOST_PP_EMPTY) \
+ 00081 } \
+ 00082 throw; \
+ 00083 } \
+ 00084 template <typename Types, typename Bits, typename UnaryOp> \
+ 00085 typename UnaryOp::result_type applyc(const Bits& bits, std::size_t index, UnaryOp op) const { \
+ 00086 typedef typename mpl::begin<Types>::type \
+ 00087 BOOST_PP_REPEAT(N, GIL_FWD_TYPEDEFS, BOOST_PP_EMPTY) \
+ 00088 T##N; \
+ 00089 switch (index) { \
+ 00090 BOOST_PP_REPEAT(BOOST_PP_ADD(N,1), GIL_FWD_CONST_CASE,BOOST_PP_EMPTY) \
+ 00091 } \
+ 00092 throw; \
+ 00093 } \
+ 00094 };
+ 00095
+ 00096 #define GIL_GENERATE_APPLY_FWD_OPS(N) BOOST_PP_REPEAT(N, GIL_APPLY_FWD_OP, BOOST_PP_EMPTY)
+ 00097
+ 00098 namespace detail {
+ 00099 template <std::size_t N> struct apply_operation_fwd_fn {};
+ 00100
+ 00101
+ 00102 GIL_GENERATE_APPLY_FWD_OPS(99)
+ 00103 };
+ 00104
+ 00105
+ 00106 template <typename Types, typename Bits, typename Op>
+ 00107 typename Op::result_type GIL_FORCEINLINE apply_operation_basec(const Bits& bits, std::size_t index, Op op) {
+ 00108 return detail::apply_operation_fwd_fn<mpl::size<Types>::value>().template applyc<Types>(bits,index,op);
+ 00109 }
+ 00110
+ 00111
+ 00112 template <typename Types, typename Bits, typename Op>
+ 00113 typename Op::result_type GIL_FORCEINLINE apply_operation_base( Bits& bits, std::size_t index, Op op) {
+ 00114 return detail::apply_operation_fwd_fn<mpl::size<Types>::value>().template apply<Types>(bits,index,op);
+ 00115 }
+ 00116
+ 00117 namespace detail {
+ 00118 template <typename T2, typename Op>
+ 00119 struct reduce_bind1 {
+ 00120 const T2& _t2;
+ 00121 mutable Op& _op;
+ 00122
+ 00123 typedef typename Op::result_type result_type;
+ 00124
+ 00125 reduce_bind1(const T2& t2, Op& op) : _t2(t2), _op(op) {}
+ 00126
+ 00127 template <typename T1> GIL_FORCEINLINE result_type operator()(const T1& t1) { return _op(t1, _t2); }
+ 00128 };
+ 00129
+ 00130 template <typename Types1, typename Bits1, typename Op>
+ 00131 struct reduce_bind2 {
+ 00132 const Bits1& _bits1;
+ 00133 std::size_t _index1;
+ 00134 mutable Op& _op;
+ 00135
+ 00136 typedef typename Op::result_type result_type;
+ 00137
+ 00138 reduce_bind2(const Bits1& bits1, std::size_t index1, Op& op) : _bits1(bits1), _index1(index1), _op(op) {}
+ 00139
+ 00140 template <typename T2> GIL_FORCEINLINE result_type operator()(const T2& t2) {
+ 00141 return apply_operation_basec<Types1>(_bits1, _index1, reduce_bind1<T2,Op>(t2, _op));
+ 00142 }
+ 00143 };
+ 00144 }
+ 00145
+ 00146
+ 00147 template <typename Types1, typename Types2, typename Bits1, typename Bits2, typename Op>
+ 00148 static typename Op::result_type GIL_FORCEINLINE apply_operation_base(const Bits1& bits1, std::size_t index1, const Bits2& bits2, std::size_t index2, Op op) {
+ 00149 return apply_operation_basec<Types2>(bits2,index2,detail::reduce_bind2<Types1,Bits1,Op>(bits1,index1,op));
+ 00150 }
+ 00151
+ 00152 #undef GIL_FWD_TYPEDEFS
+ 00153 #undef GIL_FWD_CASE
+ 00154 #undef GIL_FWD_CONST_CASE
+ 00155 #undef GIL_APPLY_FWD_OP
+ 00156 #undef GIL_GENERATE_APPLY_FWD_OPS
+ 00157 #undef BHS
+ 00158
+ 00159 } }
+ 00160
+ 00161
+ 00162 #endif
+Generated on Thu Nov 8 21:53:16 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0007.png b/doc/html/g_i_l_0007.png
new file mode 100755
index 000000000..7eb2649eb
Binary files /dev/null and b/doc/html/g_i_l_0007.png differ
diff --git a/doc/html/g_i_l_0008.html b/doc/html/g_i_l_0008.html
new file mode 100755
index 000000000..1f162cb0d
--- /dev/null
+++ b/doc/html/g_i_l_0008.html
@@ -0,0 +1,154 @@
+
+
+
+
+
+
+ Generic Image Library : apply_operation_base.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+apply_operation_base.hpp File Reference Detailed Description
+Given an object with run-time specified type (denoted as an array of Bits, dynamic index, and a static set of Types) and a generic operation, casts the object to its appropriate type and applies the operation.
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+Date: 2005-2006
+ Last updated on May 4, 2006
+
+
+#include "../../gil_config.hpp "
+#include "../../utilities.hpp "
+#include <boost/mpl/begin.hpp>
+#include <boost/mpl/next.hpp>
+#include <boost/mpl/deref.hpp>
+#include <boost/mpl/size.hpp>
+#include <boost/preprocessor/repeat.hpp>
+
+
+Go to the source code of this file.
+
+Namespaces
+namespace boost
+
+namespace boost::gil
+
+namespace boost::gil::detail
+
+Defines
+
+#define GIL_FWD_TYPEDEFS (z, N, text) T##N; typedef typename mpl::next<T##N>::type
+
+
+#define GIL_FWD_CASE (z, N, SUM) case N: return op(*gil_reinterpret_cast<typename mpl::deref<T##N>::type*>(&bits));
+
+
+#define GIL_FWD_CONST_CASE (z, N, SUM) case N: return op(*gil_reinterpret_cast_c<const typename mpl::deref<T##N>::type*>(&bits));
+
+#define GIL_APPLY_FWD_OP (z, N, text)
+
+
+#define GIL_GENERATE_APPLY_FWD_OPS (N) BOOST_PP_REPEAT(N, GIL_APPLY_FWD_OP, BOOST_PP_EMPTY)
+
+Functions
+
+template<typename Types, typename Bits, typename Op>
+Op::result_type GIL_FORCEINLINE boost::gil::apply_operation_basec (const Bits &bits, std::size_t index, Op op)
+
+
+template<typename Types, typename Bits, typename Op>
+Op::result_type GIL_FORCEINLINE boost::gil::apply_operation_base (Bits &bits, std::size_t index, Op op)
+
+
+template<typename Types1, typename Types2, typename Bits1, typename Bits2, typename Op>
+static Op::result_type GIL_FORCEINLINE boost::gil::apply_operation_base (const Bits1 &bits1, std::size_t index1, const Bits2 &bits2, std::size_t index2, Op op)
+
+
+Define Documentation
+
+
+
+
+
+
+ #define GIL_APPLY_FWD_OP
+ (
+ z,
+
+
+ N,
+
+
+ text
+
+ )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Value:
template <> struct apply_operation_fwd_fn<BOOST_PP_ADD(N,1)> { \
+ template <typename Types, typename Bits, typename UnaryOp> \
+ typename UnaryOp::result_type apply(Bits& bits, std::size_t index, UnaryOp op) const { \
+ typedef typename mpl::begin<Types>::type \
+ BOOST_PP_REPEAT(N, GIL_FWD_TYPEDEFS, BOOST_PP_EMPTY) \
+ T##N; \
+ switch (index) { \
+ BOOST_PP_REPEAT(BOOST_PP_ADD(N,1), GIL_FWD_CASE, BOOST_PP_EMPTY) \
+ } \
+ throw ; \
+ } \
+ template <typename Types, typename Bits, typename UnaryOp> \
+ typename UnaryOp::result_type applyc(const Bits& bits, std::size_t index, UnaryOp op) const { \
+ typedef typename mpl::begin<Types>::type \
+ BOOST_PP_REPEAT(N, GIL_FWD_TYPEDEFS, BOOST_PP_EMPTY) \
+ T##N; \
+ switch (index) { \
+ BOOST_PP_REPEAT(BOOST_PP_ADD(N,1), GIL_FWD_CONST_CASE,BOOST_PP_EMPTY) \
+ } \
+ throw ; \
+ } \
+ };
+
+
+
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0008.png b/doc/html/g_i_l_0008.png
new file mode 100755
index 000000000..a903a0fd2
Binary files /dev/null and b/doc/html/g_i_l_0008.png differ
diff --git a/doc/html/g_i_l_0009.html b/doc/html/g_i_l_0009.html
new file mode 100755
index 000000000..2ea0de3c8
--- /dev/null
+++ b/doc/html/g_i_l_0009.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+ Generic Image Library : Histogram Example
+
+
+
+
+
+
+
+
+
+
+
+Actual commercial code that computes the luminosity histogram (variable names have been changed and unrelated parts removed):
+
void luminosity_hist(const uint8 *r, const uint8 *g, const uint8 *b, int rows, int cols, int sRowBytes, Histogram *hist)
+{
+ for (int r=0; r<rows; r++)
+ {
+ for (int c=0; c<cols; c++)
+ {
+ int v=RGBToGray(r[c],g[c],b[c]);
+ (*hist)[v]++;
+ }
+ r+=sRowBytes;
+ g+=sRowBytes;
+ b+=sRowBytes;
+ }
+}
+
+
+Works only for RGB (duplicate versions exist for other color spaces) Works only for 8-bit images (duplicate versions exist) Works only for planar images
+
+Histogram using GIL:
+
template <typename GrayView, typename R>
+void grayimage_histogram(GrayView& img, R& hist) {
+ for (typename GrayView::iterator it=img.begin(); it!=img.end(); ++it)
+ ++hist[*it];
+}
+
+template <typename View, typename R>
+void luminosity8bit_hist(View& img, R& hist)
+{
+ grayimage_histogram(color_converted_view<gray8_pixel_t>(img),hist);
+}
+
+using boost::lambda the GIL version can be written even simpler:
using boost::lambda;
+
+template <typename GrayView, typename R>
+void grayimage_histogram(GrayView& img, R& hist)
+{
+ for_each_pixel(img, ++var(hist)[_1]);
+}
+
+The GIL version:
+Works with any supported channel depth, color space, channel ordering (RGB vs BGR), and row alignment policy. Works for both planar and interleaved images. Works with new color spaces, channel depths and image types that can be provided in future extensions of GIL The second version is as efficient as the hand-coded version
+
+It is also very flexible. For example, to compute the histogram of the second channel of the top left quadrant of the image, taking every other row and column, call:
+
grayimage_histogram(
+ nth_channel_view(
+ subsampled_view(
+ subimage_view(img, 0,0, img.width()/2,img.height()/2),
+ 2, 2
+ ),
+ 1
+ ),
+ hist
+);
+
+Note that no extra memory is allocated and no images are copied - GIL operates on the source pixels of img directly.
Generated on Thu Nov 8 21:53:19 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0009.png b/doc/html/g_i_l_0009.png
new file mode 100755
index 000000000..993b0ca81
Binary files /dev/null and b/doc/html/g_i_l_0009.png differ
diff --git a/doc/html/g_i_l_0010.html b/doc/html/g_i_l_0010.html
new file mode 100755
index 000000000..ae98df3d4
--- /dev/null
+++ b/doc/html/g_i_l_0010.html
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+ Generic Image Library : bit_aligned_pixel_iterator.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+bit_aligned_pixel_iterator.hpp Go to the documentation of this file. 00001
+ 00002
+ 00003
+ 00004
+ 00005
+ 00006
+ 00007
+ 00008
+ 00009
+ 00010
+ 00011
+ 00012
+ 00013 #ifndef GIL_BIT_ALIGNED_PIXEL_ITERATOR_HPP
+ 00014 #define GIL_BIT_ALIGNED_PIXEL_ITERATOR_HPP
+ 00015
+ 00024
+ 00025 #include <functional>
+ 00026 #include <boost/iterator/iterator_facade.hpp>
+ 00027 #include "gil_config.hpp "
+ 00028 #include "bit_aligned_pixel_reference.hpp "
+ 00029
+ 00030 namespace boost { namespace gil {
+ 00031
+ 00035
+ 00042
+ 00043 template <typename NonAlignedPixelReference>
+00044 struct bit_aligned_pixel_iterator : public iterator_facade<bit_aligned_pixel_iterator<NonAlignedPixelReference>,
+ 00045 typename NonAlignedPixelReference::value_type,
+ 00046 random_access_traversal_tag,
+ 00047 const NonAlignedPixelReference,
+ 00048 typename NonAlignedPixelReference::bit_range_t::difference_type> {
+ 00049 private :
+ 00050 typedef iterator_facade<bit_aligned_pixel_iterator<NonAlignedPixelReference>,
+ 00051 typename NonAlignedPixelReference::value_type,
+ 00052 random_access_traversal_tag,
+ 00053 const NonAlignedPixelReference,
+ 00054 typename NonAlignedPixelReference::bit_range_t::difference_type> parent_t;
+ 00055 template <typename Ref> friend struct bit_aligned_pixel_iterator ;
+ 00056
+ 00057 typedef typename NonAlignedPixelReference::bit_range_t bit_range_t;
+ 00058 public :
+ 00059 typedef typename parent_t::difference_type difference_type;
+ 00060 typedef typename parent_t::reference reference;
+ 00061
+ 00062 bit_aligned_pixel_iterator () {}
+ 00063 bit_aligned_pixel_iterator (const bit_aligned_pixel_iterator & p) : _bit_range(p._bit_range ) {}
+ 00064 bit_aligned_pixel_iterator & operator=(const bit_aligned_pixel_iterator & p) { _bit_range=p._bit_range ; return *this ; }
+ 00065
+ 00066 template <typename Ref> bit_aligned_pixel_iterator (const bit_aligned_pixel_iterator<Ref> & p) : _bit_range(p._bit_range ) {}
+ 00067
+ 00068 bit_aligned_pixel_iterator (reference* ref) : _bit_range(ref->bit_range()) {}
+ 00069 explicit bit_aligned_pixel_iterator (typename bit_range_t::byte_t* data, int bit_offset=0) : _bit_range(data,bit_offset) {}
+ 00070
+00073 reference operator[] (difference_type d) const { bit_aligned_pixel_iterator it=*this ; it.advance (d); return *it; }
+ 00074
+ 00075 reference operator->() const { return **this ; }
+ 00076 const bit_range_t& bit_range() const { return _bit_range; }
+ 00077 bit_range_t& bit_range() { return _bit_range; }
+ 00078 private :
+ 00079 bit_range_t _bit_range;
+ 00080 BOOST_STATIC_CONSTANT(int , bit_size = NonAlignedPixelReference::bit_size);
+ 00081
+ 00082 friend class boost::iterator_core_access;
+ 00083 reference dereference() const { return NonAlignedPixelReference(_bit_range); }
+ 00084 void increment() { ++_bit_range; }
+ 00085 void decrement() { --_bit_range; }
+ 00086 void advance(difference_type d) { _bit_range.bit_advance(d*bit_size); }
+ 00087
+ 00088 difference_type distance_to(const bit_aligned_pixel_iterator& it) const { return _bit_range.bit_distance_to(it._bit_range) / bit_size; }
+ 00089 bool equal (const bit_aligned_pixel_iterator& it) const { return _bit_range==it._bit_range; }
+ 00090 };
+ 00091
+ 00092 template <typename NonAlignedPixelReference>
+ 00093 struct const_iterator_type<bit_aligned_pixel_iterator<NonAlignedPixelReference> > {
+ 00094 typedef bit_aligned_pixel_iterator<typename NonAlignedPixelReference::const_reference> type;
+ 00095 };
+ 00096
+ 00097 template <typename NonAlignedPixelReference>
+ 00098 struct iterator_is_mutable<bit_aligned_pixel_iterator<NonAlignedPixelReference> > : public mpl::bool_<NonAlignedPixelReference::is_mutable> {};
+ 00099
+ 00100 template <typename NonAlignedPixelReference>
+ 00101 struct is_iterator_adaptor<bit_aligned_pixel_iterator<NonAlignedPixelReference> > : public mpl::false_ {};
+ 00102
+ 00104
+ 00106
+ 00107 template <typename NonAlignedPixelReference>
+ 00108 struct color_space_type<bit_aligned_pixel_iterator<NonAlignedPixelReference> > : public color_space_type<NonAlignedPixelReference> {};
+ 00109
+ 00110 template <typename NonAlignedPixelReference>
+ 00111 struct channel_mapping_type<bit_aligned_pixel_iterator<NonAlignedPixelReference> > : public channel_mapping_type<NonAlignedPixelReference> {};
+ 00112
+ 00113 template <typename NonAlignedPixelReference>
+ 00114 struct is_planar<bit_aligned_pixel_iterator<NonAlignedPixelReference> > : public is_planar<NonAlignedPixelReference> {};
+ 00115
+ 00117
+ 00119
+ 00120 template <typename NonAlignedPixelReference>
+ 00121 struct byte_to_memunit<bit_aligned_pixel_iterator<NonAlignedPixelReference> > : public mpl::int_<8> {};
+ 00122
+ 00123 template <typename NonAlignedPixelReference>
+ 00124 inline std::ptrdiff_t memunit_step(const bit_aligned_pixel_iterator<NonAlignedPixelReference>&) {
+ 00125 return NonAlignedPixelReference::bit_size;
+ 00126 }
+ 00127
+ 00128 template <typename NonAlignedPixelReference>
+ 00129 inline std::ptrdiff_t memunit_distance(const bit_aligned_pixel_iterator<NonAlignedPixelReference>& p1, const bit_aligned_pixel_iterator<NonAlignedPixelReference>& p2) {
+ 00130 return (p2.bit_range().current_byte() - p1.bit_range().current_byte())*8 + p2.bit_range().bit_offset() - p1.bit_range().bit_offset();
+ 00131 }
+ 00132
+ 00133 template <typename NonAlignedPixelReference>
+ 00134 inline void memunit_advance(bit_aligned_pixel_iterator<NonAlignedPixelReference>& p, std::ptrdiff_t diff) {
+ 00135 p.bit_range().bit_advance(diff);
+ 00136 }
+ 00137
+ 00138 template <typename NonAlignedPixelReference>
+ 00139 inline bit_aligned_pixel_iterator<NonAlignedPixelReference> memunit_advanced(const bit_aligned_pixel_iterator<NonAlignedPixelReference>& p, std::ptrdiff_t diff) {
+ 00140 bit_aligned_pixel_iterator<NonAlignedPixelReference> ret=p;
+ 00141 memunit_advance(ret, diff);
+ 00142 return ret;
+ 00143 }
+ 00144
+ 00145 template <typename NonAlignedPixelReference> inline
+ 00146 NonAlignedPixelReference memunit_advanced_ref(bit_aligned_pixel_iterator<NonAlignedPixelReference> it, std::ptrdiff_t diff) {
+ 00147 return *memunit_advanced(it,diff);
+ 00148 }
+ 00150
+ 00152
+ 00153 template <typename NonAlignedPixelReference>
+ 00154 struct dynamic_x_step_type<bit_aligned_pixel_iterator<NonAlignedPixelReference> > {
+ 00155 typedef memory_based_step_iterator<bit_aligned_pixel_iterator<NonAlignedPixelReference> > type;
+ 00156 };
+ 00157
+ 00159
+ 00161
+ 00162 template <typename C, typename L, bool M>
+ 00163 struct iterator_type_from_pixel<const bit_aligned_pixel_reference<C,L,M>,false,false,false> {
+ 00164 typedef bit_aligned_pixel_iterator<bit_aligned_pixel_reference<C,L,false> > type;
+ 00165 };
+ 00166
+ 00167 template <typename C, typename L, bool M>
+ 00168 struct iterator_type_from_pixel<const bit_aligned_pixel_reference<C,L,M>,false,false,true> {
+ 00169 typedef bit_aligned_pixel_iterator<bit_aligned_pixel_reference<C,L,true> > type;
+ 00170 };
+ 00171
+ 00172 template <typename C, typename L, bool M, bool IsPlanar, bool IsStep, bool IsMutable>
+ 00173 struct iterator_type_from_pixel<bit_aligned_pixel_reference<C,L,M>,IsPlanar,IsStep,IsMutable>
+ 00174 : public iterator_type_from_pixel<const bit_aligned_pixel_reference<C,L,M>,IsPlanar,IsStep,IsMutable> {};
+ 00175
+ 00176 } }
+ 00177
+ 00178 namespace std {
+ 00179
+ 00180
+ 00181
+ 00182 template <typename NonAlignedPixelReference>
+ 00183 boost::gil::bit_aligned_pixel_iterator<NonAlignedPixelReference> uninitialized_copy(boost::gil::bit_aligned_pixel_iterator<NonAlignedPixelReference> first,
+ 00184 boost::gil::bit_aligned_pixel_iterator<NonAlignedPixelReference> last,
+ 00185 boost::gil::bit_aligned_pixel_iterator<NonAlignedPixelReference> dst) {
+ 00186 return std::copy (first,last,dst);
+ 00187 }
+ 00188
+ 00189 }
+ 00190 #endif
+Generated on Thu Nov 8 21:53:16 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0010.png b/doc/html/g_i_l_0010.png
new file mode 100755
index 000000000..edc59615e
Binary files /dev/null and b/doc/html/g_i_l_0010.png differ
diff --git a/doc/html/g_i_l_0011.html b/doc/html/g_i_l_0011.html
new file mode 100755
index 000000000..af36dc6ff
--- /dev/null
+++ b/doc/html/g_i_l_0011.html
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+ Generic Image Library : bit_aligned_pixel_iterator.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+bit_aligned_pixel_iterator.hpp File Reference Detailed Description
+A model of a heterogeneous pixel that is not byte aligned. Examples are bitmap (1-bit pixels) or 6-bit RGB (222).
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+Date: 2005-2007
+ Last updated on September 28, 2006
+
+
+#include <functional>
+#include <boost/iterator/iterator_facade.hpp>
+#include "gil_config.hpp "
+#include "bit_aligned_pixel_reference.hpp "
+
+
+Go to the source code of this file.
+
+Namespaces
+namespace boost
+
+namespace boost::gil
+
+namespace std
+
+Classes
+struct bit_aligned_pixel_iterator
+
+ An iterator over non-byte-aligned pixels. Models PixelIteratorConcept , PixelBasedConcept , MemoryBasedIteratorConcept , HasDynamicXStepTypeConcept . More...
+Functions
+
+template<typename NonAlignedPixelReference>
+std::ptrdiff_t boost::gil::memunit_step (const bit_aligned_pixel_iterator< NonAlignedPixelReference > &)
+
+
+template<typename NonAlignedPixelReference>
+std::ptrdiff_t boost::gil::memunit_distance (const bit_aligned_pixel_iterator< NonAlignedPixelReference > &p1, const bit_aligned_pixel_iterator< NonAlignedPixelReference > &p2)
+
+
+template<typename NonAlignedPixelReference>
+void boost::gil::memunit_advance (bit_aligned_pixel_iterator< NonAlignedPixelReference > &p, std::ptrdiff_t diff)
+
+
+template<typename NonAlignedPixelReference>
+bit_aligned_pixel_iterator<
+ NonAlignedPixelReference > boost::gil::memunit_advanced (const bit_aligned_pixel_iterator< NonAlignedPixelReference > &p, std::ptrdiff_t diff)
+
+
+template<typename NonAlignedPixelReference>
+NonAlignedPixelReference boost::gil::memunit_advanced_ref (bit_aligned_pixel_iterator< NonAlignedPixelReference > it, std::ptrdiff_t diff)
+
+
+template<typename NonAlignedPixelReference>
+boost::gil::bit_aligned_pixel_iterator <
+ NonAlignedPixelReference > std::uninitialized_copy (boost::gil::bit_aligned_pixel_iterator < NonAlignedPixelReference > first, boost::gil::bit_aligned_pixel_iterator < NonAlignedPixelReference > last, boost::gil::bit_aligned_pixel_iterator < NonAlignedPixelReference > dst)
+
+
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0011.png b/doc/html/g_i_l_0011.png
new file mode 100755
index 000000000..636856392
Binary files /dev/null and b/doc/html/g_i_l_0011.png differ
diff --git a/doc/html/g_i_l_0012.html b/doc/html/g_i_l_0012.html
new file mode 100755
index 000000000..13a0a0b72
--- /dev/null
+++ b/doc/html/g_i_l_0012.html
@@ -0,0 +1,293 @@
+
+
+
+
+
+
+ Generic Image Library : bit_aligned_pixel_reference.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+bit_aligned_pixel_reference.hpp Go to the documentation of this file. 00001
+ 00002
+ 00003
+ 00004
+ 00005
+ 00006
+ 00007
+ 00008
+ 00009
+ 00010
+ 00011
+ 00012
+ 00013 #ifndef GIL_BIT_ALIGNED_PIXEL_REFERENCE_HPP
+ 00014 #define GIL_BIT_ALIGNED_PIXEL_REFERENCE_HPP
+ 00015
+ 00024
+ 00025 #include <functional>
+ 00026 #include <boost/mpl/accumulate.hpp>
+ 00027 #include <boost/mpl/at.hpp>
+ 00028 #include <boost/mpl/bool.hpp>
+ 00029 #include <boost/mpl/if.hpp>
+ 00030 #include <boost/mpl/plus.hpp>
+ 00031 #include <boost/mpl/push_back.hpp>
+ 00032 #include <boost/mpl/vector.hpp>
+ 00033 #include "gil_config.hpp "
+ 00034 #include "pixel.hpp "
+ 00035 #include "channel.hpp "
+ 00036
+ 00037 namespace boost { namespace gil {
+ 00038
+ 00040
+ 00041
+ 00042
+ 00044
+ 00045 template <int RangeSize, bool Mutable>
+ 00046 class bit_range {
+ 00047 public :
+ 00048 typedef typename mpl::if_c<Mutable,unsigned char,const unsigned char>::type byte_t;
+ 00049 typedef std::ptrdiff_t difference_type;
+ 00050 template <int RS, bool M> friend class bit_range;
+ 00051 private :
+ 00052 byte_t* _current_byte;
+ 00053 int _bit_offset;
+ 00054
+ 00055 public :
+ 00056 bit_range() : _current_byte(NULL), _bit_offset(0) {}
+ 00057 bit_range(byte_t* current_byte, int bit_offset) : _current_byte(current_byte), _bit_offset(bit_offset) { assert(bit_offset>=0 && bit_offset<8); }
+ 00058
+ 00059 bit_range(const bit_range& br) : _current_byte(br._current_byte), _bit_offset(br._bit_offset) {}
+ 00060 template <bool M> bit_range(const bit_range<RangeSize,M>& br) : _current_byte(br._current_byte), _bit_offset(br._bit_offset) {}
+ 00061
+ 00062 bit_range& operator=(const bit_range& br) { _current_byte = br._current_byte; _bit_offset=br._bit_offset; return *this ; }
+ 00063 bool operator==(const bit_range& br) const { return _current_byte==br._current_byte && _bit_offset==br._bit_offset; }
+ 00064
+ 00065 bit_range& operator++() {
+ 00066 _current_byte += (_bit_offset+RangeSize) / 8;
+ 00067 _bit_offset = (_bit_offset+RangeSize) % 8;
+ 00068 return *this ;
+ 00069 }
+ 00070 bit_range& operator--() { bit_advance(-RangeSize); return *this ; }
+ 00071
+ 00072 void bit_advance(difference_type num_bits) {
+ 00073 int new_offset = int(_bit_offset+num_bits);
+ 00074 _current_byte += new_offset / 8;
+ 00075 _bit_offset = new_offset % 8;
+ 00076 if (_bit_offset<0) {
+ 00077 _bit_offset+=8;
+ 00078 --_current_byte;
+ 00079 }
+ 00080 }
+ 00081 difference_type bit_distance_to(const bit_range& b) const {
+ 00082 return (b.current_byte() - current_byte())*8 + b.bit_offset()-bit_offset();
+ 00083 }
+ 00084 byte_t* current_byte() const { return _current_byte; }
+ 00085 int bit_offset() const { return _bit_offset; }
+ 00086 };
+ 00087
+ 00088
+ 00092
+ 00116
+ 00117
+ 00118 template <typename ChannelBitSizes,
+ 00119 typename Layout,
+ 00120 bool IsMutable>
+00121 struct bit_aligned_pixel_reference {
+ 00122 BOOST_STATIC_CONSTANT(int , bit_size = (mpl::accumulate<ChannelBitSizes, mpl::int_<0>, mpl::plus<mpl::_1, mpl::_2> >::type::value));
+ 00123 typedef bit_range<bit_size,IsMutable> bit_range_t;
+ 00124 typedef typename detail::min_fast_uint<bit_size>::type bitfield_t;
+ 00125 typedef typename mpl::if_c<IsMutable,unsigned char*,const unsigned char*>::type data_ptr_t;
+ 00126
+ 00127 typedef Layout layout_t;
+ 00128
+ 00129 typedef typename packed_pixel_type<bitfield_t,ChannelBitSizes,Layout> ::type value_type ;
+ 00130 typedef const bit_aligned_pixel_reference reference ;
+ 00131 typedef const bit_aligned_pixel_reference<ChannelBitSizes,Layout,false> const_reference ;
+ 00132
+ 00133 BOOST_STATIC_CONSTANT(bool , is_mutable = IsMutable);
+ 00134
+ 00135 bit_aligned_pixel_reference (){}
+ 00136 bit_aligned_pixel_reference (data_ptr_t data_ptr, int bit_offset) : _bit_range(data_ptr, bit_offset) {}
+ 00137 explicit bit_aligned_pixel_reference (const bit_range_t& bit_range) : _bit_range(bit_range) {}
+ 00138 template <bool IsMutable2> bit_aligned_pixel_reference (const bit_aligned_pixel_reference<ChannelBitSizes,Layout,IsMutable2> & p) : _bit_range(p._bit_range ) {}
+ 00139
+ 00140
+ 00141 explicit bit_aligned_pixel_reference(const typename kth_element_type<bit_aligned_pixel_reference,0>::type channel0) : _bit_range(static_cast<data_ptr_t>(&channel0), channel0.first_bit()) {
+ 00142 BOOST_STATIC_ASSERT((num_channels<bit_aligned_pixel_reference> ::value==1));
+ 00143 }
+ 00144
+ 00145
+ 00146 bit_aligned_pixel_reference(const bit_aligned_pixel_reference& p) : _bit_range(p._bit_range ) {}
+ 00147 template <typename BF, typename CR> bit_aligned_pixel_reference(packed_pixel<BF,CR,Layout> & p) : _bit_range(static_cast<data_ptr_t>(&at_c<0>(p)), at_c<0>(p).first_bit()) {
+ 00148 check_compatible<packed_pixel<BF,CR,Layout> >();
+ 00149 }
+ 00150
+ 00151 template <typename P> const bit_aligned_pixel_reference& operator=(const P& p) const { check_compatible<P>(); static_copy(p,*this ); return *this ; }
+ 00152 const bit_aligned_pixel_reference& operator=(const bit_aligned_pixel_reference& p) const { static_copy(p,*this ); return *this ; }
+ 00153
+ 00154 template <typename P> bool operator==(const P& p) const { check_compatible<P>(); return static_equal(*this ,p); }
+ 00155 template <typename P> bool operator!=(const P& p) const { return !(*this ==p); }
+ 00156
+ 00157 const bit_aligned_pixel_reference* operator->() const { return this ; }
+ 00158
+ 00159 const bit_range_t& bit_range() const { return _bit_range; }
+ 00160 private :
+ 00161 mutable bit_range_t _bit_range;
+ 00162 template <typename C, typename L, bool M> friend struct bit_aligned_pixel_reference;
+ 00163
+ 00164 template <typename Pixel> static void check_compatible() { gil_function_requires<PixelsCompatibleConcept<Pixel,bit_aligned_pixel_reference> >(); }
+ 00165 };
+ 00166
+ 00168
+ 00170
+ 00171 template <typename ChannelBitSizes, typename L, bool IsMutable, int K>
+ 00172 struct kth_element_type<bit_aligned_pixel_reference<ChannelBitSizes,L,IsMutable>, K> {
+ 00173 private :
+ 00174 typedef typename bit_aligned_pixel_reference<ChannelBitSizes,L,IsMutable> ::bitfield_t bitfield_t;
+ 00175 public :
+ 00176 typedef const packed_dynamic_channel_reference<bitfield_t, mpl::at_c<ChannelBitSizes,K>::type::value, IsMutable> type;
+ 00177 };
+ 00178
+ 00179 template <typename C, typename L, bool M, int K>
+ 00180 struct kth_element_reference_type<bit_aligned_pixel_reference<C,L,M>, K>
+ 00181 : public kth_element_type<bit_aligned_pixel_reference<C,L,M>, K> {};
+ 00182
+ 00183 template <typename C, typename L, bool M, int K>
+ 00184 struct kth_element_const_reference_type<bit_aligned_pixel_reference<C,L,M>, K>
+ 00185 : public kth_element_type<bit_aligned_pixel_reference<C,L,M>, K> {};
+ 00186
+ 00187
+ 00188 namespace detail {
+ 00189
+ 00190 template <typename IntegralVector, int K>
+ 00191 struct sum_k : public mpl::plus<sum_k<IntegralVector,K-1>, typename mpl::at_c<IntegralVector,K-1>::type > {};
+ 00192
+ 00193 template <typename IntegralVector> struct sum_k<IntegralVector,0> : public mpl::int_<0> {};
+ 00194 }
+ 00195
+ 00196
+ 00197 template <int K, typename ChannelBitSizes, typename L, bool Mutable> inline
+ 00198 typename kth_element_reference_type<bit_aligned_pixel_reference<ChannelBitSizes,L,Mutable>,K>::type
+ 00199 at_c(const bit_aligned_pixel_reference<ChannelBitSizes,L,Mutable>& p) {
+ 00200 typedef bit_aligned_pixel_reference<ChannelBitSizes,L,Mutable> pixel_t;
+ 00201 typedef typename kth_element_reference_type<pixel_t,K>::type channel_t;
+ 00202 typedef typename pixel_t::bit_range_t bit_range_t;
+ 00203
+ 00204 bit_range_t bit_range(p.bit_range());
+ 00205 bit_range.bit_advance(detail::sum_k<ChannelBitSizes,K>::value);
+ 00206
+ 00207 return channel_t(bit_range.current_byte(), bit_range.bit_offset());
+ 00208 }
+ 00209
+ 00211
+ 00213
+ 00215 template <typename C, typename L, bool M>
+00216 struct is_pixel<bit_aligned_pixel_reference<C,L,M> > : public mpl::true_{};
+ 00217
+ 00219
+ 00221
+ 00222 template <typename C, typename L, bool M>
+ 00223 struct color_space_type<bit_aligned_pixel_reference<C,L,M> > {
+ 00224 typedef typename L::color_space_t type;
+ 00225 };
+ 00226
+ 00227 template <typename C, typename L, bool M>
+ 00228 struct channel_mapping_type<bit_aligned_pixel_reference<C,L,M> > {
+ 00229 typedef typename L::channel_mapping_t type;
+ 00230 };
+ 00231
+ 00232 template <typename C, typename L, bool M>
+ 00233 struct is_planar<bit_aligned_pixel_reference<C,L,M> > : mpl::false_ {};
+ 00234
+ 00236
+ 00238
+ 00239 namespace detail {
+ 00240
+ 00241 template <unsigned K, typename T> struct k_copies;
+ 00242 template <typename T> struct k_copies<0,T> {
+ 00243 typedef mpl::vector0<> type;
+ 00244 };
+ 00245 template <unsigned K, typename T> struct k_copies : public mpl::push_back<typename k_copies<K-1,T>::type, T> {};
+ 00246 }
+ 00247
+ 00248
+ 00249
+ 00250 template <typename BitField, int NumBits, typename Layout>
+ 00251 struct pixel_reference_type<const packed_dynamic_channel_reference<BitField,NumBits,false>, Layout, false, false> {
+ 00252 private :
+ 00253 typedef typename mpl::size<typename Layout::color_space_t>::type size_t;
+ 00254 typedef typename detail::k_copies<size_t::value,mpl::integral_c<unsigned,NumBits> >::type channel_bit_sizes_t;
+ 00255 public :
+ 00256 typedef bit_aligned_pixel_reference<channel_bit_sizes_t, Layout, false> type;
+ 00257 };
+ 00258
+ 00259
+ 00260
+ 00261 template <typename BitField, int NumBits, typename Layout>
+ 00262 struct pixel_reference_type<const packed_dynamic_channel_reference<BitField,NumBits,true>, Layout, false, true> {
+ 00263 private :
+ 00264 typedef typename mpl::size<typename Layout::color_space_t>::type size_t;
+ 00265 typedef typename detail::k_copies<size_t::value,mpl::integral_c<unsigned,NumBits> >::type channel_bit_sizes_t;
+ 00266 public :
+ 00267 typedef bit_aligned_pixel_reference<channel_bit_sizes_t, Layout, true> type;
+ 00268 };
+ 00269
+ 00270 } }
+ 00271
+ 00272 namespace std {
+ 00273
+ 00274
+ 00275
+ 00276
+ 00277
+ 00278
+ 00279
+ 00280 template <typename C, typename L, typename R> inline
+ 00281 void swap(boost::gil::bit_aligned_pixel_reference<C,L,true> x, R& y) {
+ 00282 boost::gil::swap_proxy<typename boost::gil::bit_aligned_pixel_reference<C,L,true>::value_type>(x,y);
+ 00283 }
+ 00284
+ 00285
+ 00286 template <typename C, typename L> inline
+ 00287 void swap(typename boost::gil::bit_aligned_pixel_reference<C,L,true> ::value_type& x, boost::gil::bit_aligned_pixel_reference<C,L,true> y) {
+ 00288 boost::gil::swap_proxy<typename boost::gil::bit_aligned_pixel_reference<C,L,true>::value_type>(x,y);
+ 00289 }
+ 00290
+ 00291
+ 00292 template <typename C, typename L> inline
+ 00293 void swap(boost::gil::bit_aligned_pixel_reference<C,L,true> x, boost::gil::bit_aligned_pixel_reference<C,L,true> y) {
+ 00294 boost::gil::swap_proxy<typename boost::gil::bit_aligned_pixel_reference<C,L,true>::value_type>(x,y);
+ 00295 }
+ 00296 }
+ 00297 #endif
+Generated on Thu Nov 8 21:53:16 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0012.png b/doc/html/g_i_l_0012.png
new file mode 100755
index 000000000..61868c29c
Binary files /dev/null and b/doc/html/g_i_l_0012.png differ
diff --git a/doc/html/g_i_l_0013.html b/doc/html/g_i_l_0013.html
new file mode 100755
index 000000000..8cfd092bf
--- /dev/null
+++ b/doc/html/g_i_l_0013.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+ Generic Image Library : bit_aligned_pixel_reference.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+bit_aligned_pixel_reference.hpp File Reference Detailed Description
+A model of a heterogeneous pixel that is not byte aligned. Examples are bitmap (1-bit pixels) or 6-bit RGB (222).
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+Date: 2005-2007
+ Last updated on September 28, 2006
+
+
+#include <functional>
+#include <boost/mpl/accumulate.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/plus.hpp>
+#include <boost/mpl/push_back.hpp>
+#include <boost/mpl/vector.hpp>
+#include "gil_config.hpp "
+#include "pixel.hpp "
+#include "channel.hpp "
+
+
+Go to the source code of this file.
+
+Namespaces
+namespace boost
+
+namespace boost::gil
+
+namespace boost::gil::detail
+
+namespace std
+
+Classes
+struct bit_aligned_pixel_reference
+
+ Heterogeneous pixel reference corresponding to non-byte-aligned bit range. Models ColorBaseConcept , PixelConcept , PixelBasedConcept . More...
+struct is_pixel< bit_aligned_pixel_reference< C, L, M > >
+
+ Metafunction predicate that flags bit_aligned_pixel_reference as a model of PixelConcept . Required by PixelConcept . More...
+Functions
+
+template<int K, typename ChannelBitSizes, typename L, bool Mutable>
+kth_element_reference_type<
+ bit_aligned_pixel_reference<
+ ChannelBitSizes, L, Mutable >,
+ K >::type boost::gil::at_c (const bit_aligned_pixel_reference< ChannelBitSizes, L, Mutable > &p)
+
+
+template<typename C, typename L, typename R>
+void std::swap (boost::gil::bit_aligned_pixel_reference < C, L, true > x, R &y)
+
+
+template<typename C, typename L>
+void std::swap (typename boost::gil::bit_aligned_pixel_reference < C, L, true >::value_type &x, boost::gil::bit_aligned_pixel_reference < C, L, true > y)
+
+
+template<typename C, typename L>
+void std::swap (boost::gil::bit_aligned_pixel_reference < C, L, true > x, boost::gil::bit_aligned_pixel_reference < C, L, true > y)
+
+
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0013.png b/doc/html/g_i_l_0013.png
new file mode 100755
index 000000000..89977ed5d
Binary files /dev/null and b/doc/html/g_i_l_0013.png differ
diff --git a/doc/html/g_i_l_0014.html b/doc/html/g_i_l_0014.html
new file mode 100755
index 000000000..640bc89b1
--- /dev/null
+++ b/doc/html/g_i_l_0014.html
@@ -0,0 +1,484 @@
+
+
+
+
+
+
+ Generic Image Library : channel.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+channel.hpp Go to the documentation of this file. 00001
+ 00002
+ 00003
+ 00004
+ 00005
+ 00006
+ 00007
+ 00008
+ 00009
+ 00010
+ 00011
+ 00012
+ 00013 #ifndef GIL_CHANNEL_HPP
+ 00014 #define GIL_CHANNEL_HPP
+ 00015
+ 00026
+ 00027 #include <limits>
+ 00028 #include <cassert>
+ 00029 #include <boost/cstdint.hpp>
+ 00030 #include "gil_config.hpp "
+ 00031 #include "utilities.hpp "
+ 00032
+ 00033 namespace boost { namespace gil {
+ 00034
+ 00035
+ 00050
+ 00051 namespace detail {
+ 00052 template <typename T, bool is_class > struct channel_traits_impl;
+ 00053
+ 00054
+ 00055 template <typename T>
+ 00056 struct channel_traits_impl<T, true> {
+ 00057 typedef typename T::value_type value_type;
+ 00058 typedef typename T::reference reference;
+ 00059 typedef typename T::pointer pointer;
+ 00060 typedef typename T::const_reference const_reference;
+ 00061 typedef typename T::const_pointer const_pointer;
+ 00062 BOOST_STATIC_CONSTANT(bool , is_mutable=T::is_mutable);
+ 00063 static value_type min_value() { return T::min_value(); }
+ 00064 static value_type max_value() { return T::max_value(); }
+ 00065 };
+ 00066
+ 00067
+ 00068 template <typename T>
+ 00069 struct channel_traits_impl<T, false> {
+ 00070 typedef T value_type;
+ 00071 typedef T& reference;
+ 00072 typedef T* pointer;
+ 00073 typedef const T& const_reference;
+ 00074 typedef T const * const_pointer;
+ 00075 BOOST_STATIC_CONSTANT(bool , is_mutable=true );
+ 00076 static value_type min_value() { return (std::numeric_limits<T>::min)(); }
+ 00077 static value_type max_value() { return (std::numeric_limits<T>::max)(); }
+ 00078 };
+ 00079
+ 00080
+ 00081 template <typename T>
+ 00082 struct channel_traits_impl<const T, false> : public channel_traits_impl<T, false> {
+ 00083 typedef const T& reference;
+ 00084 typedef const T* pointer;
+ 00085 BOOST_STATIC_CONSTANT(bool , is_mutable=false );
+ 00086 };
+ 00087 }
+ 00088
+ 00107 template <typename T>
+00108 struct channel_traits : public detail::channel_traits_impl<T, is_class<T>::value> {};
+ 00109
+ 00110
+ 00111 template <typename T> struct channel_traits < T&> : public channel_traits<T> {};
+ 00112
+ 00113
+ 00114 template <typename T> struct channel_traits<const T&> : public channel_traits<T> {
+ 00115 typedef typename channel_traits<T>::const_reference reference;
+ 00116 typedef typename channel_traits<T>::const_pointer pointer;
+ 00117 BOOST_STATIC_CONSTANT(bool , is_mutable=false );
+ 00118 };
+ 00119
+ 00125
+ 00146
+ 00147
+ 00148 template <typename BaseChannelValue,
+ 00149 typename MinVal, typename MaxVal>
+00150 struct scoped_channel_value {
+ 00151 typedef scoped_channel_value value_type ;
+ 00152 typedef value_type & reference ;
+ 00153 typedef value_type * pointer ;
+ 00154 typedef const value_type & const_reference ;
+ 00155 typedef const value_type * const_pointer ;
+ 00156 BOOST_STATIC_CONSTANT(bool , is_mutable=channel_traits<BaseChannelValue> ::is_mutable);
+ 00157
+ 00158 static value_type min_value() { return MinVal::apply(); }
+ 00159 static value_type max_value() { return MaxVal::apply(); }
+ 00160
+ 00161 scoped_channel_value () {}
+ 00162 scoped_channel_value (const scoped_channel_value & c) : _value(c._value ) {}
+ 00163 scoped_channel_value (BaseChannelValue val) : _value(val) {}
+ 00164
+ 00165 scoped_channel_value & operator++() { ++_value; return *this ; }
+ 00166 scoped_channel_value & operator--() { --_value; return *this ; }
+ 00167
+ 00168 scoped_channel_value operator++(int ) { scoped_channel_value tmp=*this ; this->operator++(); return tmp; }
+ 00169 scoped_channel_value operator--(int ) { scoped_channel_value tmp=*this ; this->operator--(); return tmp; }
+ 00170
+ 00171 template <typename Scalar2> scoped_channel_value & operator+=(Scalar2 v) { _value+=v; return *this ; }
+ 00172 template <typename Scalar2> scoped_channel_value & operator-=(Scalar2 v) { _value-=v; return *this ; }
+ 00173 template <typename Scalar2> scoped_channel_value & operator*=(Scalar2 v) { _value*=v; return *this ; }
+ 00174 template <typename Scalar2> scoped_channel_value & operator/=(Scalar2 v) { _value/=v; return *this ; }
+ 00175
+ 00176 scoped_channel_value & operator=(BaseChannelValue v) { _value=v; return *this ; }
+ 00177 operator BaseChannelValue() const { return _value; }
+ 00178 private :
+ 00179 BaseChannelValue _value;
+ 00180 };
+ 00181
+ 00182 struct float_zero { static float apply() { return 0.0f; } };
+ 00183 struct float_one { static float apply() { return 1.0f; } };
+ 00184
+ 00185
+ 00191
+ 00192
+ 00193
+ 00194
+ 00195
+ 00196 namespace detail {
+ 00197
+ 00198 template <int NumBits>
+ 00199 struct min_fast_uint : public mpl::if_c< (NumBits<=8),
+ 00200 uint_least8_t,
+ 00201 typename mpl::if_c< (NumBits<=16),
+ 00202 uint_least16_t,
+ 00203 typename mpl::if_c< (NumBits<=32),
+ 00204 uint_least32_t,
+ 00205 uintmax_t
+ 00206 >::type
+ 00207 >::type
+ 00208 > {};
+ 00209 }
+ 00210
+ 00227
+ 00228
+ 00229 template <int NumBits>
+00230 class packed_channel_value {
+ 00231 static const std::size_t num_values = 1<<NumBits;
+ 00232 public:
+ 00233 typedef typename detail::min_fast_uint<NumBits>::type integer_t;
+ 00234
+ 00235 typedef packed_channel_value value_type;
+ 00236 typedef value_type& reference;
+ 00237 typedef const value_type& const_reference;
+ 00238 typedef value_type* pointer;
+ 00239 typedef const value_type* const_pointer;
+ 00240
+ 00241 static value_type min_value() { return value_type(0); }
+ 00242 static value_type max_value() { return value_type(num_values-1); }
+ 00243 BOOST_STATIC_CONSTANT(bool, is_mutable=true);
+ 00244
+ 00245 packed_channel_value() {}
+ 00246 packed_channel_value(integer_t v) : _value(v % num_values) {}
+ 00247 packed_channel_value(const packed_channel_value& v) : _value(v._value) {}
+ 00248 template <typename Scalar> packed_channel_value(Scalar v) : _value(integer_t(v) % num_values) {}
+ 00249
+ 00250 operator integer_t() const { return _value; }
+ 00251 private:
+ 00252 integer_t _value;
+ 00253 };
+ 00254
+ 00255 namespace detail {
+ 00256 template <typename Derived, typename BitField, int NumBits, bool Mutable>
+ 00257 class packed_channel_reference_base {
+ 00258 protected:
+ 00259 typedef typename mpl::if_c<Mutable,void*,const void*>::type data_ptr_t;
+ 00260 public:
+ 00261 data_ptr_t _data_ptr;
+ 00262
+ 00263 typedef packed_channel_value<NumBits> value_type;
+ 00264 typedef const Derived reference;
+ 00265 typedef value_type* pointer;
+ 00266 typedef const value_type* const_pointer;
+ 00267 BOOST_STATIC_CONSTANT(int, num_bits=NumBits);
+ 00268 BOOST_STATIC_CONSTANT(bool, is_mutable=Mutable);
+ 00269
+ 00270 static value_type min_value() { return channel_traits<value_type>::min_value(); }
+ 00271 static value_type max_value() { return channel_traits<value_type>::max_value(); }
+ 00272
+ 00273 typedef BitField bitfield_t;
+ 00274 typedef typename value_type::integer_t integer_t;
+ 00275
+ 00276 packed_channel_reference_base(data_ptr_t data_ptr) : _data_ptr(data_ptr) {}
+ 00277 packed_channel_reference_base(const packed_channel_reference_base& ref) : _data_ptr(ref._data_ptr) {}
+ 00278 const Derived& operator=(integer_t v) const { set(v); return derived(); }
+ 00279
+ 00280 const Derived& operator++() const { set(get()+1); return derived(); }
+ 00281 const Derived& operator--() const { set(get()-1); return derived(); }
+ 00282
+ 00283 Derived operator++(int) const { Derived tmp=derived(); this->operator++(); return tmp; }
+ 00284 Derived operator--(int) const { Derived tmp=derived(); this->operator--(); return tmp; }
+ 00285
+ 00286 template <typename Scalar2> const Derived& operator+=(Scalar2 v) const { set(get()+v); return derived(); }
+ 00287 template <typename Scalar2> const Derived& operator-=(Scalar2 v) const { set(get()-v); return derived(); }
+ 00288 template <typename Scalar2> const Derived& operator*=(Scalar2 v) const { set(get()*v); return derived(); }
+ 00289 template <typename Scalar2> const Derived& operator/=(Scalar2 v) const { set(get()/v); return derived(); }
+ 00290
+ 00291 operator integer_t() const { return get(); }
+ 00292 data_ptr_t operator &() const {return _data_ptr;}
+ 00293 protected:
+ 00294 static const integer_t max_val = (1<<NumBits) - 1;
+ 00295 const bitfield_t& const_data() const { return *static_cast<const bitfield_t*>(_data_ptr); }
+ 00296 bitfield_t& data() const { return *static_cast< bitfield_t*>(_data_ptr); }
+ 00297 private:
+ 00298 void set(integer_t value) const {
+ 00299 const integer_t num_values = max_val+1;
+ 00300 this->derived().set_unsafe(((value % num_values) + num_values) % num_values);
+ 00301 }
+ 00302 integer_t get() const { return derived().get(); }
+ 00303 const Derived& derived() const { return static_cast<const Derived&>(*this); }
+ 00304 };
+ 00305 }
+ 00306
+ 00323 template <typename BitField,
+ 00324 int FirstBit, int NumBits,
+ 00325 bool Mutable>
+ 00326 class packed_channel_reference;
+ 00327
+ 00328 template <typename BitField,
+ 00329 int NumBits,
+ 00330 bool Mutable>
+ 00331 class packed_dynamic_channel_reference;
+ 00332
+ 00335 template <typename BitField, int FirstBit, int NumBits>
+00336 class packed_channel_reference<BitField,FirstBit,NumBits,false>
+ 00337 : public detail::packed_channel_reference_base<packed_channel_reference<BitField,FirstBit,NumBits,false>,BitField,NumBits,false> {
+ 00338 typedef detail::packed_channel_reference_base<packed_channel_reference<BitField,FirstBit,NumBits,false>,BitField,NumBits,false> parent_t;
+ 00339 friend class packed_channel_reference<BitField,FirstBit,NumBits,true>;
+ 00340
+ 00341 static const BitField channel_mask = parent_t::max_val<<FirstBit;
+ 00342 void operator=(const packed_channel_reference&);
+ 00343 public:
+ 00344 typedef const packed_channel_reference<BitField,FirstBit,NumBits,false> const_reference;
+ 00345 typedef const packed_channel_reference<BitField,FirstBit,NumBits,true> mutable_reference;
+ 00346 typedef typename parent_t::integer_t integer_t;
+ 00347
+ 00348 explicit packed_channel_reference(const void* data_ptr) : parent_t(data_ptr) {}
+ 00349 packed_channel_reference(const packed_channel_reference& ref) : parent_t(ref._data_ptr) {}
+ 00350 packed_channel_reference(const mutable_reference& ref) : parent_t(ref._data_ptr) {}
+ 00351
+ 00352 unsigned first_bit() const { return FirstBit; }
+ 00353
+ 00354 integer_t get() const { return integer_t((this->const_data()&channel_mask) >> FirstBit); }
+ 00355 };
+ 00356
+ 00359 template <typename BitField, int FirstBit, int NumBits>
+00360 class packed_channel_reference<BitField,FirstBit,NumBits,true>
+ 00361 : public detail::packed_channel_reference_base<packed_channel_reference<BitField,FirstBit,NumBits,true>,BitField,NumBits,true> {
+ 00362 typedef detail::packed_channel_reference_base<packed_channel_reference<BitField,FirstBit,NumBits,true>,BitField,NumBits,true> parent_t;
+ 00363 friend class packed_channel_reference<BitField,FirstBit,NumBits,false>;
+ 00364
+ 00365 static const BitField channel_mask = parent_t::max_val<<FirstBit;
+ 00366 public:
+ 00367 typedef const packed_channel_reference<BitField,FirstBit,NumBits,false> const_reference;
+ 00368 typedef const packed_channel_reference<BitField,FirstBit,NumBits,true> mutable_reference;
+ 00369 typedef typename parent_t::integer_t integer_t;
+ 00370
+ 00371 explicit packed_channel_reference(void* data_ptr) : parent_t(data_ptr) {}
+ 00372 packed_channel_reference(const packed_channel_reference& ref) : parent_t(ref._data_ptr) {}
+ 00373
+ 00374 const packed_channel_reference& operator=(integer_t value) const { assert(value<=parent_t::max_val); set_unsafe(value); return *this; }
+ 00375 const packed_channel_reference& operator=(const mutable_reference& ref) const { set_from_reference(ref.data()); return *this; }
+ 00376 const packed_channel_reference& operator=(const const_reference& ref) const { set_from_reference(ref.const_data()); return *this; }
+ 00377
+ 00378 template <bool Mutable1>
+ 00379 const packed_channel_reference& operator=(const packed_dynamic_channel_reference<BitField,NumBits,Mutable1>& ref) const { set_unsafe(ref.get()); return *this; }
+ 00380
+ 00381 unsigned first_bit() const { return FirstBit; }
+ 00382
+ 00383 integer_t get() const { return integer_t((this->const_data()&channel_mask) >> FirstBit); }
+ 00384 void set_unsafe(integer_t value) const { this->data() = (this->const_data() & ~channel_mask) | (value<<FirstBit); }
+ 00385 private:
+ 00386 void set_from_reference(const BitField& other_bits) const { this->data() = (this->const_data() & ~channel_mask) | (other_bits & channel_mask); }
+ 00387 };
+ 00388
+ 00389 } }
+ 00390
+ 00391 namespace std {
+ 00392
+ 00393
+ 00394
+ 00395
+ 00396
+ 00397
+ 00400 template <typename BF, int FB, int NB, bool M, typename R> inline
+00401 void swap(boost::gil::packed_channel_reference<BF,FB,NB,M> x, R& y) {
+ 00402 boost::gil::swap_proxy<typename boost::gil::packed_channel_reference<BF,FB,NB,M>::value_type>(x,y);
+ 00403 }
+ 00404
+ 00405
+ 00408 template <typename BF, int FB, int NB, bool M> inline
+00409 void swap(typename boost::gil::packed_channel_reference<BF,FB,NB,M>::value_type& x, boost::gil::packed_channel_reference<BF,FB,NB,M> y) {
+ 00410 boost::gil::swap_proxy<typename boost::gil::packed_channel_reference<BF,FB,NB,M>::value_type>(x,y);
+ 00411 }
+ 00412
+ 00413
+ 00416 template <typename BF, int FB, int NB, bool M> inline
+00417 void swap(boost::gil::packed_channel_reference<BF,FB,NB,M> x, boost::gil::packed_channel_reference<BF,FB,NB,M> y) {
+ 00418 boost::gil::swap_proxy<typename boost::gil::packed_channel_reference<BF,FB,NB,M>::value_type>(x,y);
+ 00419 }
+ 00420 }
+ 00421
+ 00422 namespace boost { namespace gil {
+ 00423
+ 00441
+ 00442
+ 00443
+ 00444 template <typename BitField, int NumBits>
+00445 class packed_dynamic_channel_reference<BitField,NumBits,false>
+ 00446 : public detail::packed_channel_reference_base<packed_dynamic_channel_reference<BitField,NumBits,false>,BitField,NumBits,false> {
+ 00447 typedef detail::packed_channel_reference_base<packed_dynamic_channel_reference<BitField,NumBits,false>,BitField,NumBits,false> parent_t;
+ 00448 friend class packed_dynamic_channel_reference<BitField,NumBits,true>;
+ 00449
+ 00450 unsigned _first_bit;
+ 00451
+ 00452 void operator=(const packed_dynamic_channel_reference&);
+ 00453 public:
+ 00454 typedef const packed_dynamic_channel_reference<BitField,NumBits,false> const_reference;
+ 00455 typedef const packed_dynamic_channel_reference<BitField,NumBits,true> mutable_reference;
+ 00456 typedef typename parent_t::integer_t integer_t;
+ 00457
+ 00458 packed_dynamic_channel_reference(const void* data_ptr, unsigned first_bit) : parent_t(data_ptr), _first_bit(first_bit) {}
+ 00459 packed_dynamic_channel_reference(const const_reference& ref) : parent_t(ref._data_ptr), _first_bit(ref._first_bit) {}
+ 00460 packed_dynamic_channel_reference(const mutable_reference& ref) : parent_t(ref._data_ptr), _first_bit(ref._first_bit) {}
+ 00461
+ 00462 unsigned first_bit() const { return _first_bit; }
+ 00463
+ 00464 integer_t get() const {
+ 00465 const BitField channel_mask = parent_t::max_val<<_first_bit;
+ 00466 return (this->const_data()&channel_mask) >> _first_bit;
+ 00467 }
+ 00468 };
+ 00469
+ 00473 template <typename BitField, int NumBits>
+00474 class packed_dynamic_channel_reference<BitField,NumBits,true>
+ 00475 : public detail::packed_channel_reference_base<packed_dynamic_channel_reference<BitField,NumBits,true>,BitField,NumBits,true> {
+ 00476 typedef detail::packed_channel_reference_base<packed_dynamic_channel_reference<BitField,NumBits,true>,BitField,NumBits,true > parent_t;
+ 00477 friend class packed_dynamic_channel_reference<BitField,NumBits,false>;
+ 00478
+ 00479 unsigned _first_bit;
+ 00480
+ 00481 public :
+ 00482 typedef const packed_dynamic_channel_reference<BitField,NumBits,false> const_reference ;
+ 00483 typedef const packed_dynamic_channel_reference<BitField,NumBits,true> mutable_reference ;
+ 00484 typedef typename parent_t::integer_t integer_t;
+ 00485
+ 00486 packed_dynamic_channel_reference(void * data_ptr, unsigned first_bit) : parent_t((((char *)data_ptr)+first_bit/8)), _first_bit(first_bit%8) {}
+ 00487 packed_dynamic_channel_reference(const packed_dynamic_channel_reference& ref) : parent_t(ref._data_ptr), _first_bit(ref._first_bit) {}
+ 00488
+ 00489 const packed_dynamic_channel_reference& operator=(integer_t value) const { assert(value<=parent_t::max_val); set_unsafe(value); return *this ; }
+ 00490 const packed_dynamic_channel_reference& operator=(const mutable_reference & ref) const { set_unsafe(ref.get ()); return *this ; }
+ 00491 const packed_dynamic_channel_reference& operator=(const const_reference & ref) const { set_unsafe(ref.get ()); return *this ; }
+ 00492
+ 00493 template <typename BitField1, int FirstBit1, bool Mutable1>
+ 00494 const packed_dynamic_channel_reference& operator=(const packed_channel_reference<BitField1, FirstBit1, NumBits, Mutable1>& ref) const
+ 00495 { set_unsafe(ref.get()); return *this ; }
+ 00496
+ 00497 unsigned first_bit() const { return _first_bit; }
+ 00498
+ 00499 integer_t get() const {
+ 00500 const BitField channel_mask = parent_t::max_val<<_first_bit;
+ 00501 return (this->const_data()&channel_mask) >> _first_bit;
+ 00502 }
+ 00503 void set_unsafe(integer_t value) const {
+ 00504 const BitField channel_mask = parent_t::max_val<<_first_bit;
+ 00505 this->data() = (this->const_data() & ~channel_mask) | value<<_first_bit;
+ 00506 }
+ 00507 };
+ 00508 } }
+ 00509
+ 00510 namespace std {
+ 00511
+ 00512
+ 00513
+ 00514
+ 00515
+ 00516
+ 00517
+ 00520 template <typename BF, int NB, bool M, typename R> inline
+00521 void swap(boost::gil::packed_dynamic_channel_reference<BF,NB,M> x, R& y) {
+ 00522 boost::gil::swap_proxy<typename boost::gil::packed_dynamic_channel_reference<BF,NB,M>::value_type>(x,y);
+ 00523 }
+ 00524
+ 00525
+ 00528 template <typename BF, int NB, bool M> inline
+00529 void swap(typename boost::gil::packed_dynamic_channel_reference<BF,NB,M>::value_type& x, boost::gil::packed_dynamic_channel_reference<BF,NB,M> y) {
+ 00530 boost::gil::swap_proxy<typename boost::gil::packed_dynamic_channel_reference<BF,NB,M>::value_type>(x,y);
+ 00531 }
+ 00532
+ 00533
+ 00536 template <typename BF, int NB, bool M> inline
+00537 void swap(boost::gil::packed_dynamic_channel_reference<BF,NB,M> x, boost::gil::packed_dynamic_channel_reference<BF,NB,M> y) {
+ 00538 boost::gil::swap_proxy<typename boost::gil::packed_dynamic_channel_reference<BF,NB,M>::value_type>(x,y);
+ 00539 }
+ 00540 }
+ 00541
+ 00542 namespace boost { namespace gil {
+ 00548
+ 00552
+ 00554 typedef uint8_t bits8;
+ 00555
+ 00559
+ 00561 typedef uint16_t bits16;
+ 00562
+ 00566
+ 00568 typedef uint32_t bits32;
+ 00569
+ 00573
+ 00575 typedef int8_t bits8s;
+ 00576
+ 00580
+ 00582 typedef int16_t bits16s;
+ 00583
+ 00587
+ 00589 typedef int32_t bits32s;
+ 00590
+ 00594
+ 00596 typedef scoped_channel_value<float,float_zero,float_one> bits32f;
+ 00597
+ 00598 } }
+ 00599
+ 00600 namespace boost {
+ 00601
+ 00602 template <int NumBits>
+ 00603 struct is_integral<gil::packed_channel_value<NumBits> > : public mpl::true_ {};
+ 00604
+ 00605 template <typename BitField, int FirstBit, int NumBits, bool IsMutable>
+ 00606 struct is_integral<gil::packed_channel_reference<BitField,FirstBit,NumBits,IsMutable> > : public mpl::true_ {};
+ 00607
+ 00608 template <typename BitField, int NumBits, bool IsMutable>
+ 00609 struct is_integral<gil::packed_dynamic_channel_reference<BitField,NumBits,IsMutable> > : public mpl::true_ {};
+ 00610
+ 00611 template <typename BaseChannelValue, typename MinVal, typename MaxVal>
+ 00612 struct is_integral<gil::scoped_channel_value<BaseChannelValue,MinVal,MaxVal> > : public is_integral<BaseChannelValue> {};
+ 00613
+ 00614 }
+ 00615
+ 00616 #endif
+Generated on Thu Nov 8 21:53:16 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0014.png b/doc/html/g_i_l_0014.png
new file mode 100755
index 000000000..79f1e8fa8
Binary files /dev/null and b/doc/html/g_i_l_0014.png differ
diff --git a/doc/html/g_i_l_0015.html b/doc/html/g_i_l_0015.html
new file mode 100755
index 000000000..23dc60f36
--- /dev/null
+++ b/doc/html/g_i_l_0015.html
@@ -0,0 +1,402 @@
+
+
+
+
+
+
+ Generic Image Library : channel_algorithm.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+channel_algorithm.hpp Go to the documentation of this file. 00001
+ 00002
+ 00003
+ 00004
+ 00005
+ 00006
+ 00007
+ 00008
+ 00009
+ 00010
+ 00011
+ 00012 #ifndef GIL_CHANNEL_ALGORITHM_HPP
+ 00013 #define GIL_CHANNEL_ALGORITHM_HPP
+ 00014
+ 00025
+ 00026 #include "gil_config.hpp "
+ 00027 #include "channel.hpp "
+ 00028 #include <boost/mpl/less.hpp>
+ 00029 #include <boost/mpl/integral_c.hpp>
+ 00030 #include <boost/mpl/greater.hpp>
+ 00031 #include <boost/type_traits.hpp>
+ 00032
+ 00033 namespace boost { namespace gil {
+ 00034
+ 00035 #ifdef _MSC_VER
+ 00036 #pragma warning(push)
+ 00037 #pragma warning(disable: 4309) // disable truncation of constant value warning (using -1 to get the max value of an integral)
+ 00038 #endif
+ 00039
+ 00040 namespace detail {
+ 00041
+ 00042
+ 00043 template <typename SrcChannelV, typename DstChannelV, bool SrcIsIntegral, bool DstIsIntegral> struct channel_converter_unsigned_impl;
+ 00044 template <typename SrcChannelV, typename DstChannelV, bool SrcIsGreater> struct channel_converter_unsigned_integral;
+ 00045 template <typename SrcChannelV, typename DstChannelV, bool SrcLessThanDst, bool SrcDivisible> struct channel_converter_unsigned_integral_impl;
+ 00046 template <typename SrcChannelV, typename DstChannelV, bool SrcLessThanDst, bool CannotFitInInteger> struct channel_converter_unsigned_integral_nondivisible;
+ 00047
+ 00051
+ 00052
+ 00053 template <typename Unsigned IntegralChannel>
+ 00054 struct unsigned_integral_max_value : public mpl::integral_c<UnsignedIntegralChannel,-1> {};
+ 00055
+ 00056 template <>
+ 00057 struct unsigned_integral_max_value<uint8_t> : public mpl::integral_c<uint32_t,0xFF> {};
+ 00058 template <>
+ 00059 struct unsigned_integral_max_value<uint16_t> : public mpl::integral_c<uint32_t,0xFFFF> {};
+ 00060 template <>
+ 00061 struct unsigned_integral_max_value<uint32_t> : public mpl::integral_c<uintmax_t,0xFFFFFFFF> {};
+ 00062
+ 00063
+ 00064 template <int K>
+ 00065 struct unsigned_integral_max_value<packed_channel_value<K> >
+ 00066 : public mpl::integral_c<typename packed_channel_value<K>::integer_t, (1<<K)-1> {};
+ 00067
+ 00071
+ 00072 template <typename UnsignedIntegralChannel>
+ 00073 struct unsigned_integral_num_bits : public mpl::int_<sizeof(UnsignedIntegralChannel)*8> {};
+ 00074
+ 00075 template <int K>
+ 00076 struct unsigned_integral_num_bits<packed_channel_value<K> >
+ 00077 : public mpl::int_<K> {};
+ 00078
+ 00079 }
+ 00080
+ 00114
+ 00115
+ 00116
+ 00117
+ 00118 template <typename SrcChannelV, typename DstChannelV>
+ 00119 struct channel_converter_unsigned
+ 00120 : public detail::channel_converter_unsigned_impl<SrcChannelV,DstChannelV,is_integral<SrcChannelV>::value,is_integral<DstChannelV>::value> {};
+ 00121
+ 00122
+00124 template <typename T> struct channel_converter_unsigned<T,T> : public detail::identity<T> {};
+ 00125
+ 00126
+ 00127 namespace detail {
+ 00128
+ 00132
+ 00134 template <typename SrcChannelV, typename DstChannelV, bool SrcIsIntegral, bool DstIsIntegral>
+00135 struct channel_converter_unsigned_impl : public std::unary_function<DstChannelV,SrcChannelV> {
+ 00136 DstChannelV operator()(SrcChannelV src) const {
+ 00137 return DstChannelV(channel_traits<DstChannelV>::min_value() +
+ 00138 (src - channel_traits<SrcChannelV>::min_value()) / channel_range<SrcChannelV>() * channel_range<DstChannelV>());
+ 00139 }
+ 00140 private:
+ 00141 template <typename C>
+ 00142 static double channel_range() {
+ 00143 return double(channel_traits<C>::max_value()) - double(channel_traits<C>::min_value());
+ 00144 }
+ 00145 };
+ 00146
+ 00147
+ 00148 template <typename SrcChannelV, typename DstChannelV>
+ 00149 struct channel_converter_unsigned_impl<SrcChannelV,DstChannelV,true,true>
+ 00150 : public channel_converter_unsigned_integral<SrcChannelV,DstChannelV,
+ 00151 mpl::less<unsigned_integral_max_value<SrcChannelV>,unsigned_integral_max_value<DstChannelV> >::value > {};
+ 00152
+ 00153
+ 00157
+ 00158 template <typename SrcChannelV, typename DstChannelV>
+ 00159 struct channel_converter_unsigned_integral<SrcChannelV,DstChannelV,true>
+ 00160 : public channel_converter_unsigned_integral_impl<SrcChannelV,DstChannelV,true,
+ 00161 !(unsigned_integral_max_value<DstChannelV>::value % unsigned_integral_max_value<SrcChannelV>::value) > {};
+ 00162
+ 00163 template <typename SrcChannelV, typename DstChannelV>
+ 00164 struct channel_converter_unsigned_integral<SrcChannelV,DstChannelV,false>
+ 00165 : public channel_converter_unsigned_integral_impl<SrcChannelV,DstChannelV,false,
+ 00166 !(unsigned_integral_max_value<SrcChannelV>::value % unsigned_integral_max_value<DstChannelV>::value) > {};
+ 00167
+ 00168
+ 00172
+ 00173
+ 00174
+ 00175
+ 00176 template <typename SrcChannelV, typename DstChannelV>
+ 00177 struct channel_converter_unsigned_integral_impl<SrcChannelV,DstChannelV,true,true> {
+ 00178 DstChannelV operator()(SrcChannelV src) const {
+ 00179 typedef typename unsigned_integral_max_value<DstChannelV>::value_type integer_t;
+ 00180 static const integer_t mul = unsigned_integral_max_value<DstChannelV>::value / unsigned_integral_max_value<SrcChannelV>::value;
+ 00181 return DstChannelV(src * mul);
+ 00182 }
+ 00183 };
+ 00184
+ 00185
+ 00186
+ 00187
+ 00188 template <typename SrcChannelV, typename DstChannelV>
+ 00189 struct channel_converter_unsigned_integral_impl<SrcChannelV,DstChannelV,false,true> {
+ 00190 DstChannelV operator()(SrcChannelV src) const {
+ 00191 typedef typename unsigned_integral_max_value<SrcChannelV>::value_type integer_t;
+ 00192 static const integer_t div = unsigned_integral_max_value<SrcChannelV>::value / unsigned_integral_max_value<DstChannelV>::value;
+ 00193 static const integer_t div2 = div/2;
+ 00194 return DstChannelV((src + div2) / div);
+ 00195 }
+ 00196 };
+ 00197
+ 00198
+ 00199 template <typename DstChannelV>
+ 00200 struct channel_converter_unsigned_integral_impl<uintmax_t,DstChannelV,false,true> {
+ 00201 DstChannelV operator()(uintmax_t src) const {
+ 00202 static const uintmax_t div = unsigned_integral_max_value<bits32>::value / unsigned_integral_max_value<DstChannelV>::value;
+ 00203 static const uintmax_t div2 = div/2;
+ 00204 if (src > unsigned_integral_max_value<uintmax_t>::value - div2)
+ 00205 return unsigned_integral_max_value<DstChannelV>::value;
+ 00206 return DstChannelV((src + div2) / div);
+ 00207 }
+ 00208 };
+ 00209
+ 00210
+ 00211
+ 00212
+ 00213 template <typename SrcChannelV, typename DstChannelV, bool SrcLessThanDst>
+ 00214 struct channel_converter_unsigned_integral_impl<SrcChannelV,DstChannelV,SrcLessThanDst,false>
+ 00215 : public channel_converter_unsigned_integral_nondivisible<SrcChannelV,DstChannelV,SrcLessThanDst,
+ 00216 mpl::greater<
+ 00217 mpl::plus<unsigned_integral_num_bits<SrcChannelV>,unsigned_integral_num_bits<DstChannelV> >,
+ 00218 unsigned_integral_num_bits<uintmax_t>
+ 00219 >::value> {};
+ 00220
+ 00221
+ 00222
+ 00223
+ 00224
+ 00225
+ 00226 template <typename SrcChannelV, typename DstChannelV>
+ 00227 struct channel_converter_unsigned_integral_nondivisible<SrcChannelV,DstChannelV,true,false> {
+ 00228 DstChannelV operator()(SrcChannelV src) const {
+ 00229 typedef typename detail::min_fast_uint<unsigned_integral_num_bits<SrcChannelV>::value+unsigned_integral_num_bits<DstChannelV>::value>::type integer_t;
+ 00230 return DstChannelV(integer_t(src * unsigned_integral_max_value<DstChannelV>::value) / unsigned_integral_max_value<SrcChannelV>::value);
+ 00231 }
+ 00232 };
+ 00233
+ 00234
+ 00235
+ 00236
+ 00237
+ 00238 template <typename SrcChannelV, typename DstChannelV>
+ 00239 struct channel_converter_unsigned_integral_nondivisible<SrcChannelV,DstChannelV,true,true> {
+ 00240 DstChannelV operator()(SrcChannelV src) const {
+ 00241 static const double mul = unsigned_integral_max_value<DstChannelV>::value / double(unsigned_integral_max_value<SrcChannelV>::value);
+ 00242 return DstChannelV(src * mul);
+ 00243 }
+ 00244 };
+ 00245
+ 00246
+ 00247
+ 00248
+ 00249
+ 00250 template <typename SrcChannelV, typename DstChannelV, bool CannotFit>
+ 00251 struct channel_converter_unsigned_integral_nondivisible<SrcChannelV,DstChannelV,false,CannotFit> {
+ 00252 DstChannelV operator()(SrcChannelV src) const {
+ 00253 typedef typename unsigned_integral_max_value<SrcChannelV>::value_type integer_t;
+ 00254
+ 00255 static const double div = unsigned_integral_max_value<SrcChannelV>::value / double(unsigned_integral_max_value<DstChannelV>::value);
+ 00256 static const integer_t div2 = integer_t(div/2);
+ 00257 return DstChannelV((src + div2) / div);
+ 00258 }
+ 00259 };
+ 00260
+ 00261 }
+ 00262
+ 00266
+00267 template <typename DstChannelV> struct channel_converter_unsigned<bits32f,DstChannelV> : public std::unary_function<bits32f,DstChannelV> {
+ 00268 DstChannelV operator()(bits32f x) const { return DstChannelV(x*channel_traits<DstChannelV>::max_value()+0.5f); }
+ 00269 };
+ 00270
+ 00271 template <typename SrcChannelV> struct channel_converter_unsigned<SrcChannelV,bits32f> : public std::unary_function<SrcChannelV,bits32f> {
+ 00272 bits32f operator()(SrcChannelV x) const { return bits32f(x/float(channel_traits<SrcChannelV>::max_value())); }
+ 00273 };
+ 00274
+ 00275 template <> struct channel_converter_unsigned<bits32f,bits32f> : public std::unary_function<bits32f,bits32f> {
+ 00276 bits32f operator()(bits32f x) const { return x; }
+ 00277 };
+ 00278
+ 00279
+00281 template <> struct channel_converter_unsigned<bits32,bits32f> : public std::unary_function<bits32,bits32f> {
+ 00282 bits32f operator()(bits32 x) const {
+ 00283
+ 00284 if (x>=channel_traits<bits32>::max_value()) return channel_traits <bits32f>::max_value();
+ 00285 return float(x) / float(channel_traits<bits32>::max_value());
+ 00286 }
+ 00287 };
+00289 template <> struct channel_converter_unsigned<bits32f,bits32> : public std::unary_function<bits32f,bits32> {
+ 00290 bits32 operator()(bits32f x) const {
+ 00291
+ 00292 if (x>=channel_traits<bits32f> ::max_value()) return channel_traits<bits32>::max_value ();
+ 00293 return bits32(x * channel_traits<bits32> ::max_value() + 0.5f);
+ 00294 }
+ 00295 };
+ 00296
+ 00298
+ 00299 namespace detail {
+ 00300
+ 00301
+ 00302 template <typename ChannelValue>
+ 00303 struct channel_convert_to_unsigned : public detail::identity<ChannelValue> {
+ 00304 typedef ChannelValue type;
+ 00305 };
+ 00306
+ 00307 template <> struct channel_convert_to_unsigned<bits8s> : public std::unary_function<bits8s,bits8> {
+ 00308 typedef bits8 type;
+ 00309 type operator()(bits8s val) const { return val+128; }
+ 00310 };
+ 00311
+ 00312 template <> struct channel_convert_to_unsigned<bits16s> : public std::unary_function<bits16s,bits16> {
+ 00313 typedef bits16 type;
+ 00314 type operator()(bits16s val) const { return val+32768; }
+ 00315 };
+ 00316
+ 00317 template <> struct channel_convert_to_unsigned<bits32s> : public std::unary_function<bits32s,bits32> {
+ 00318 typedef bits32 type;
+ 00319 type operator()(bits32s x) const { return static_cast<bits32>(x+(1<<31)); }
+ 00320 };
+ 00321
+ 00322
+ 00323
+ 00324
+ 00325 template <typename ChannelValue>
+ 00326 struct channel_convert_from_unsigned : public detail::identity<ChannelValue> {
+ 00327 typedef ChannelValue type;
+ 00328 };
+ 00329
+ 00330 template <> struct channel_convert_from_unsigned<bits8s> : public std::unary_function<bits8,bits8s> {
+ 00331 typedef bits8s type;
+ 00332 type operator()(bits8 val) const { return val-128; }
+ 00333 };
+ 00334
+ 00335 template <> struct channel_convert_from_unsigned<bits16s> : public std::unary_function<bits16,bits16s> {
+ 00336 typedef bits16s type;
+ 00337 type operator()(bits16 val) const { return val-32768; }
+ 00338 };
+ 00339
+ 00340 template <> struct channel_convert_from_unsigned<bits32s> : public std::unary_function<bits32,bits32s> {
+ 00341 typedef bits32s type;
+ 00342 type operator()(bits32 x) const { return static_cast<bits32s>(x-(1<<31)); }
+ 00343 };
+ 00344
+ 00345 }
+ 00346
+ 00349 template <typename SrcChannelV, typename DstChannelV>
+00350 struct channel_converter : public std::unary_function<SrcChannelV,DstChannelV> {
+ 00351 DstChannelV operator()(SrcChannelV src) const {
+ 00352 typedef detail::channel_convert_to_unsigned<SrcChannelV> to_unsigned;
+ 00353 typedef detail::channel_convert_from_unsigned<DstChannelV> from_unsigned;
+ 00354 typedef channel_converter_unsigned<typename to_unsigned::result_type, typename from_unsigned::argument_type> converter_unsigned;
+ 00355 return from_unsigned()(converter_unsigned()(to_unsigned()(src)));
+ 00356 }
+ 00357 };
+ 00358
+ 00361 template <typename DstChannel, typename SrcChannel>
+00362 inline typename channel_traits<DstChannel> ::value_type channel_convert (SrcChannel src) {
+ 00363 return channel_converter<typename channel_traits<SrcChannel> ::value_type,
+ 00364 typename channel_traits<DstChannel> ::value_type>()(src);
+ 00365 }
+ 00366
+00371 struct default_channel_converter {
+ 00372 template <typename Ch1, typename Ch2>
+ 00373 void operator()(const Ch1& src, Ch2& dst) const {
+ 00374 dst=channel_convert<Ch2>(src);
+ 00375 }
+ 00376 };
+ 00377
+ 00378 namespace detail {
+ 00379
+ 00380 inline uint32_t div255(uint32_t in) { uint32_t tmp=in+128; return (tmp + (tmp>>8))>>8; }
+ 00381
+ 00382
+ 00383 inline uint32_t div32768(uint32_t in) { return (in+16384)>>15; }
+ 00384 }
+ 00385
+ 00399
+ 00400
+ 00402 template <typename ChannelValue>
+00403 struct channel_multiplier_unsigned : public std::binary_function<ChannelValue,ChannelValue,ChannelValue> {
+ 00404 ChannelValue operator()(ChannelValue a, ChannelValue b) const {
+ 00405 return ChannelValue(a / double (channel_traits<ChannelValue> ::max_value()) * b);
+ 00406 }
+ 00407 };
+ 00408
+00410 template <> struct channel_multiplier_unsigned <bits8> : public std::binary_function<bits8,bits8,bits8> {
+ 00411 bits8 operator()(bits8 a, bits8 b) const { return bits8(detail::div255(uint32_t(a) * uint32_t(b))); }
+ 00412 };
+ 00413
+00415 template <> struct channel_multiplier_unsigned <bits16> : public std::binary_function<bits16,bits16,bits16> {
+ 00416 bits16 operator()(bits16 a, bits16 b) const { return bits16((uint32_t(a) * uint32_t(b))/65535); }
+ 00417 };
+ 00418
+00420 template <> struct channel_multiplier_unsigned <bits32f> : public std::binary_function<bits32f,bits32f,bits32f> {
+ 00421 bits32f operator()(bits32f a, bits32f b) const { return a*b; }
+ 00422 };
+ 00423
+ 00425 template <typename ChannelValue>
+00426 struct channel_multiplier : public std::binary_function<ChannelValue, ChannelValue, ChannelValue> {
+ 00427 ChannelValue operator()(ChannelValue a, ChannelValue b) const {
+ 00428 typedef detail::channel_convert_to_unsigned<ChannelValue> to_unsigned;
+ 00429 typedef detail::channel_convert_from_unsigned<ChannelValue> from_unsigned;
+ 00430 typedef channel_multiplier_unsigned<typename to_unsigned::result_type> multiplier_unsigned;
+ 00431 return from_unsigned()(multiplier_unsigned()(to_unsigned()(a), to_unsigned()(b)));
+ 00432 }
+ 00433 };
+ 00434
+ 00436 template <typename Channel>
+00437 inline typename channel_traits<Channel> ::value_type channel_multiply (Channel a, Channel b) {
+ 00438 return channel_multiplier<typename channel_traits<Channel> ::value_type>()(a,b);
+ 00439 }
+ 00441
+ 00456
+ 00457
+ 00458 template <typename Channel>
+00459 inline typename channel_traits<Channel> ::value_type channel_invert (Channel x) {
+ 00460 return channel_traits<Channel>::max_value ()-x + channel_traits<Channel>::min_value ();
+ 00461 }
+ 00462
+ 00463 #ifdef _MSC_VER
+ 00464 #pragma warning(pop)
+ 00465 #endif
+ 00466
+ 00467 } }
+ 00468
+ 00469 #endif
+Generated on Thu Nov 8 21:53:16 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0015.png b/doc/html/g_i_l_0015.png
new file mode 100755
index 000000000..b886d08d5
Binary files /dev/null and b/doc/html/g_i_l_0015.png differ
diff --git a/doc/html/g_i_l_0016.html b/doc/html/g_i_l_0016.html
new file mode 100755
index 000000000..3569ab1df
--- /dev/null
+++ b/doc/html/g_i_l_0016.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+ Generic Image Library : channel_algorithm.hpp File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+channel_algorithm.hpp File Reference Detailed Description
+Channel algorithms.
+
+
Author: Lubomir Bourdev and Hailin Jin
+ Adobe Systems Incorporated
+Date: 2005-2007
+ Last updated on May 6, 2007
+Definitions of standard GIL 8-bit, 16-bit, 32-bit channels
+
+#include "gil_config.hpp "
+#include "channel.hpp "
+#include <boost/mpl/less.hpp>
+#include <boost/mpl/integral_c.hpp>
+#include <boost/mpl/greater.hpp>
+#include <boost/type_traits.hpp>
+
+
+Go to the source code of this file.
+Generated on Thu Nov 8 21:53:18 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0016.png b/doc/html/g_i_l_0016.png
new file mode 100755
index 000000000..f6c1d91a2
Binary files /dev/null and b/doc/html/g_i_l_0016.png differ
diff --git a/doc/html/g_i_l_0017.html b/doc/html/g_i_l_0017.html
new file mode 100755
index 000000000..49cf34a4a
--- /dev/null
+++ b/doc/html/g_i_l_0017.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+any_image Member List This is the complete list of members for any_image , including all inherited members.
+ _dynamic_cast () const (defined in variant< ImageTypes > )variant< ImageTypes > [inline]
+ _dynamic_cast () (defined in variant< ImageTypes > )variant< ImageTypes > [inline]
+ any_image () (defined in any_image )any_image [inline]
+ any_image (const T &obj) (defined in any_image )any_image [inline, explicit]
+ any_image (T &obj, bool do_swap) (defined in any_image )any_image [inline, explicit]
+ any_image (const any_image &v) (defined in any_image )any_image [inline]
+ const_view_t typedef (defined in any_image )any_image
+ current_type_is () const (defined in variant< ImageTypes > )variant< ImageTypes > [inline]
+ dimensions () const (defined in any_image )any_image [inline]
+ has_type () (defined in variant< ImageTypes > )variant< ImageTypes > [inline, static]
+ height () const (defined in any_image )any_image [inline]
+ move_in (T &obj) (defined in variant< ImageTypes > )variant< ImageTypes > [inline]
+ num_channels () const (defined in any_image )any_image [inline]
+ operator!= (defined in variant< ImageTypes > )variant< ImageTypes > [friend]
+ operator= (const T &obj) (defined in any_image )any_image [inline]
+ operator= (const any_image &v) (defined in any_image )any_image [inline]
+ operator= (const variant &v) (defined in variant< ImageTypes > )variant< ImageTypes > [inline]
+ operator== (defined in variant< ImageTypes > )variant< ImageTypes > [friend]
+ point_t typedef (defined in any_image )any_image
+ recreate (const point_t &dims, unsigned alignment=1) (defined in any_image )any_image [inline]
+ recreate (x_coord_t width, y_coord_t height, unsigned alignment=1) (defined in any_image )any_image [inline]
+ types_t typedef (defined in variant< ImageTypes > )variant< ImageTypes >
+ variant () (defined in variant< ImageTypes > )variant< ImageTypes > [inline]
+ variant (const T &obj) (defined in variant< ImageTypes > )variant< ImageTypes > [inline, explicit]
+ variant (T &obj, bool do_swap) (defined in variant< ImageTypes > )variant< ImageTypes > [explicit]
+ variant (const variant &v) (defined in variant< ImageTypes > )variant< ImageTypes > [inline]
+ view_t typedef (defined in any_image )any_image
+ width () const (defined in any_image )any_image [inline]
+ x_coord_t typedef (defined in any_image )any_image
+ y_coord_t typedef (defined in any_image )any_image
+ ~variant () (defined in variant< ImageTypes > )variant< ImageTypes > [inline, virtual]
+
Generated on Thu Nov 8 21:53:24 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0017.png b/doc/html/g_i_l_0017.png
new file mode 100755
index 000000000..c97eeff52
Binary files /dev/null and b/doc/html/g_i_l_0017.png differ
diff --git a/doc/html/g_i_l_0018.html b/doc/html/g_i_l_0018.html
new file mode 100755
index 000000000..bab975624
--- /dev/null
+++ b/doc/html/g_i_l_0018.html
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+ Generic Image Library : any_image Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+any_image Class Template Reference
+
+[Models ]
+ #include <any_image.hpp >
+
+
Inheritance diagram for any_image:
+
+
+
+
+List of all members. Detailed Description
+template<typename ImageTypes>
+ class boost::gil::any_image< ImageTypes >
+
+Represents a run-time specified image. Note it does NOT model ImageConcept .
+
+Represents an image whose type (color space, layout, planar/interleaved organization, etc) can be specified at run time. It is the runtime equivalent of image. Some of the requirements of ImageConcept , such as the value_type typedef cannot be fulfilled, since the language does not allow runtime type specification. Other requirements, such as access to the pixels, would be inefficient to provide. Thus any_image does not fully model ImageConcept . In particular, its view and const_view methods return any_image_view , which does not fully model ImageViewConcept . See any_image_view for more.
+
+
+
+Public Types
+
+typedef any_image_view < typename
+detail::images_get_const_views_t<
+ ImageTypes >::type > const_view_t
+
+
+typedef any_image_view < typename
+detail::images_get_views_t<
+ ImageTypes >::type > view_t
+
+
+typedef std::ptrdiff_t x_coord_t
+
+
+typedef std::ptrdiff_t y_coord_t
+
+
+typedef point2 < std::ptrdiff_t > point_t
+
+Public Member Functions
+
+template<typename T>
+ any_image (const T &obj)
+
+
+template<typename T>
+ any_image (T &obj, bool do_swap)
+
+
+ any_image (const any_image &v)
+
+
+template<typename T>
+any_image & operator= (const T &obj)
+
+
+any_image & operator= (const any_image &v)
+
+
+void recreate (const point_t &dims, unsigned alignment=1)
+
+
+void recreate (x_coord_t width, y_coord_t height, unsigned alignment=1)
+
+
+std::size_t num_channels () const
+
+
+point_t dimensions () const
+
+
+x_coord_t width () const
+
+
+y_coord_t height () const
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:24 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0018.png b/doc/html/g_i_l_0018.png
new file mode 100755
index 000000000..8699ca8fd
Binary files /dev/null and b/doc/html/g_i_l_0018.png differ
diff --git a/doc/html/g_i_l_0019.html b/doc/html/g_i_l_0019.html
new file mode 100755
index 000000000..3f0edb18c
--- /dev/null
+++ b/doc/html/g_i_l_0019.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+any_image_view Member List This is the complete list of members for any_image_view , including all inherited members.
Generated on Thu Nov 8 21:53:24 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0019.png b/doc/html/g_i_l_0019.png
new file mode 100755
index 000000000..0a5bbcc8c
Binary files /dev/null and b/doc/html/g_i_l_0019.png differ
diff --git a/doc/html/g_i_l_0020.html b/doc/html/g_i_l_0020.html
new file mode 100755
index 000000000..73b81857e
--- /dev/null
+++ b/doc/html/g_i_l_0020.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+ Generic Image Library : any_image_view Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+any_image_view Class Template Reference
+
+[Models ]
+ #include <any_image_view.hpp >
+
+
Inheritance diagram for any_image_view:
+
+
+
+
+List of all members. Detailed Description
+template<typename ImageViewTypes>
+ class boost::gil::any_image_view< ImageViewTypes >
+
+Represents a run-time specified image view. Models HasDynamicXStepTypeConcept , HasDynamicYStepTypeConcept , Note that this class does NOT model ImageViewConcept .
+
+CLASS any_image_view
+Represents a view whose type (color space, layout, planar/interleaved organization, etc) can be specified at run time. It is the runtime equivalent of image_view . Some of the requirements of ImageViewConcept , such as the value_type typedef cannot be fulfilled, since the language does not allow runtime type specification. Other requirements, such as access to the pixels, would be inefficient to provide. Thus any_image_view does not fully model ImageViewConcept . However, many algorithms provide overloads taking runtime specified views and thus in many cases any_image_view can be used in places taking a view.
+To perform an algorithm on any_image_view , put the algorithm in a function object and invoke it by calling apply_operation(runtime_view, algorithm_fn);
+
+
+
+Public Types
+
+typedef any_image_view < typename
+detail::views_get_const_t<
+ ImageViewTypes >::type > const_t
+
+
+typedef std::ptrdiff_t x_coord_t
+
+
+typedef std::ptrdiff_t y_coord_t
+
+
+typedef point2 < std::ptrdiff_t > point_t
+
+Public Member Functions
+
+template<typename T>
+ any_image_view (const T &obj)
+
+
+ any_image_view (const any_image_view &v)
+
+
+template<typename T>
+any_image_view & operator= (const T &obj)
+
+
+any_image_view & operator= (const any_image_view &v)
+
+
+std::size_t num_channels () const
+
+
+point_t dimensions () const
+
+
+x_coord_t width () const
+
+
+y_coord_t height () const
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:24 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0020.png b/doc/html/g_i_l_0020.png
new file mode 100755
index 000000000..c73921e02
Binary files /dev/null and b/doc/html/g_i_l_0020.png differ
diff --git a/doc/html/g_i_l_0021.html b/doc/html/g_i_l_0021.html
new file mode 100755
index 000000000..69bb6df1a
--- /dev/null
+++ b/doc/html/g_i_l_0021.html
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+color_convert_deref_fn Member List This is the complete list of members for color_convert_deref_fn , including all inherited members.
+ BOOST_STATIC_CONSTANT (bool, is_mutable=IsMutable) (defined in deref_base< color_convert_deref_fn< SrcConstRefP, DstP, CC >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false > )deref_base< color_convert_deref_fn< SrcConstRefP, DstP, CC >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false >
+ color_convert_deref_fn () (defined in color_convert_deref_fn )color_convert_deref_fn [inline]
+ color_convert_deref_fn (CC cc_in) (defined in color_convert_deref_fn )color_convert_deref_fn [inline]
+ const_reference typedef (defined in deref_base< color_convert_deref_fn< SrcConstRefP, DstP, CC >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false > )deref_base< color_convert_deref_fn< SrcConstRefP, DstP, CC >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false >
+ const_t typedef (defined in deref_base< color_convert_deref_fn< SrcConstRefP, DstP, CC >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false > )deref_base< color_convert_deref_fn< SrcConstRefP, DstP, CC >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false >
+ operator() (SrcConstRefP srcP) const (defined in color_convert_deref_fn )color_convert_deref_fn [inline]
+ reference typedef (defined in deref_base< color_convert_deref_fn< SrcConstRefP, DstP, CC >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false > )deref_base< color_convert_deref_fn< SrcConstRefP, DstP, CC >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false >
+ value_type typedef (defined in deref_base< color_convert_deref_fn< SrcConstRefP, DstP, CC >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false > )deref_base< color_convert_deref_fn< SrcConstRefP, DstP, CC >, DstP, DstP, const DstP &, SrcConstRefP, DstP, false >
+
Generated on Thu Nov 8 21:53:22 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0021.png b/doc/html/g_i_l_0021.png
new file mode 100755
index 000000000..421fccc53
Binary files /dev/null and b/doc/html/g_i_l_0021.png differ
diff --git a/doc/html/g_i_l_0022.html b/doc/html/g_i_l_0022.html
new file mode 100755
index 000000000..39e399d8f
--- /dev/null
+++ b/doc/html/g_i_l_0022.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ Generic Image Library : color_convert_deref_fn Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+color_convert_deref_fn Class Template Reference
+
+[color_converted_view , Models ]
+ #include <image_view_factory.hpp >
+
+
Inheritance diagram for color_convert_deref_fn:
+
+
+
+
+List of all members. Detailed Description
+template<typename SrcConstRefP, typename DstP, typename CC = default_color_converter>
+ class boost::gil::color_convert_deref_fn< SrcConstRefP, DstP, CC >
+
+Function object that given a source pixel, returns it converted to a given color space and channel depth. Models: PixelDereferenceAdaptorConcept .
+
+Useful in constructing a color converted view over a given image view
+
+
+
+Public Member Functions
+
+ color_convert_deref_fn (CC cc_in)
+
+
+DstP operator() (SrcConstRefP srcP) const
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:22 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0022.png b/doc/html/g_i_l_0022.png
new file mode 100755
index 000000000..ffd8b0e25
Binary files /dev/null and b/doc/html/g_i_l_0022.png differ
diff --git a/doc/html/g_i_l_0023.html b/doc/html/g_i_l_0023.html
new file mode 100755
index 000000000..c7b17c1cd
--- /dev/null
+++ b/doc/html/g_i_l_0023.html
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+deref_compose Member List This is the complete list of members for deref_compose , including all inherited members.
+ _fn1 (defined in deref_compose )deref_compose
+ _fn2 (defined in deref_compose )deref_compose
+ argument_type typedef (defined in deref_compose )deref_compose
+ BOOST_STATIC_CONSTANT (bool, is_mutable=IsMutable) (defined in deref_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable > )deref_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable >
+ const_reference typedef (defined in deref_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable > )deref_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable >
+ const_t typedef (defined in deref_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable > )deref_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable >
+ deref_compose () (defined in deref_compose )deref_compose [inline]
+ deref_compose (const D1 &x, const D2 &y) (defined in deref_compose )deref_compose [inline]
+ deref_compose (const deref_compose &dc) (defined in deref_compose )deref_compose [inline]
+ deref_compose (const deref_compose< _D1, _D2 > &dc) (defined in deref_compose )deref_compose [inline]
+ operator() (argument_type x) const (defined in deref_compose )deref_compose [inline]
+ operator() (argument_type x) (defined in deref_compose )deref_compose [inline]
+ reference typedef (defined in deref_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable > )deref_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable >
+ result_type typedef (defined in deref_compose )deref_compose
+ value_type typedef (defined in deref_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable > )deref_base< deref_compose< D1::const_t, D2::const_t >, D1::value_type, D1::reference, D1::const_reference, D2::argument_type, D1::result_type, D1::is_mutable &&D2::is_mutable >
+
Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0023.png b/doc/html/g_i_l_0023.png
new file mode 100755
index 000000000..ebec3d36b
Binary files /dev/null and b/doc/html/g_i_l_0023.png differ
diff --git a/doc/html/g_i_l_0024.html b/doc/html/g_i_l_0024.html
new file mode 100755
index 000000000..2dd547bf8
--- /dev/null
+++ b/doc/html/g_i_l_0024.html
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+ Generic Image Library : deref_compose Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+deref_compose Class Template Reference
+
+[Models ]
+ #include <utilities.hpp >
+
+
Inheritance diagram for deref_compose:
+
+
+
+
+List of all members. Detailed Description
+template<typename D1, typename D2>
+ class boost::gil::deref_compose< D1, D2 >
+
+Composes two dereference function objects. Similar to std::unary_compose but needs to pull some typedefs from the component types. Models: PixelDereferenceAdaptorConcept .
+
+
+
+Public Types
+
+typedef D2::argument_type argument_type
+
+
+typedef D1::result_type result_type
+
+Public Member Functions
+
+ deref_compose (const D1 &x, const D2 &y)
+
+
+ deref_compose (const deref_compose &dc)
+
+
+template<typename _D1, typename _D2>
+ deref_compose (const deref_compose < _D1, _D2 > &dc)
+
+
+result_type operator() (argument_type x) const
+
+
+result_type operator() (argument_type x)
+
+Public Attributes
+
+D1 _fn1
+
+
+D2 _fn2
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0024.png b/doc/html/g_i_l_0024.png
new file mode 100755
index 000000000..6fcf39504
Binary files /dev/null and b/doc/html/g_i_l_0024.png differ
diff --git a/doc/html/g_i_l_0025.html b/doc/html/g_i_l_0025.html
new file mode 100755
index 000000000..56087665a
--- /dev/null
+++ b/doc/html/g_i_l_0025.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+dereference_iterator_adaptor Member List This is the complete list of members for dereference_iterator_adaptor , including all inherited members.
Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0025.png b/doc/html/g_i_l_0025.png
new file mode 100755
index 000000000..c37c33001
Binary files /dev/null and b/doc/html/g_i_l_0025.png differ
diff --git a/doc/html/g_i_l_0026.html b/doc/html/g_i_l_0026.html
new file mode 100755
index 000000000..2d01aef9c
--- /dev/null
+++ b/doc/html/g_i_l_0026.html
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+ Generic Image Library : dereference_iterator_adaptor Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+#include <pixel_iterator_adaptor.hpp >
+
+List of all members.
Detailed Description
+template<typename Iterator, typename DFn>
+ class boost::gil::dereference_iterator_adaptor< Iterator, DFn >
+
+An adaptor over an existing iterator that provides for custom filter on dereferencing the object. Models: IteratorAdaptorConcept , PixelIteratorConcept .
+
+
+
+Public Types
+
+typedef iterator_adaptor<
+ dereference_iterator_adaptor <
+ Iterator, DFn >, Iterator,
+ typename DFn::value_type,
+ use_default, typename DFn::reference,
+ use_default > parent_t
+
+
+typedef DFn::result_type reference
+
+
+typedef std::iterator_traits<
+ Iterator >::difference_type difference_type
+
+
+typedef DFn dereference_fn
+
+Public Member Functions
+
+template<typename Iterator1>
+ dereference_iterator_adaptor (const dereference_iterator_adaptor < Iterator1, DFn > &dit)
+
+
+ dereference_iterator_adaptor (Iterator it, DFn deref_fn=DFn())
+
+
+template<typename Iterator1, typename DFn1>
+ dereference_iterator_adaptor (const dereference_iterator_adaptor < Iterator1, DFn1 > &it)
+
+reference operator[] (difference_type d) const
+
+
+bool operator> (const dereference_iterator_adaptor &p) const
+
+
+bool operator< (const dereference_iterator_adaptor &p) const
+
+
+bool operator>= (const dereference_iterator_adaptor &p) const
+
+
+bool operator<= (const dereference_iterator_adaptor &p) const
+
+
+bool operator== (const dereference_iterator_adaptor &p) const
+
+
+bool operator!= (const dereference_iterator_adaptor &p) const
+
+
+Iterator & base ()
+
+
+const Iterator & base () const
+
+
+const DFn & deref_fn () const
+
+Friends
+
+class dereference_iterator_adaptor
+
+
+class boost::iterator_core_access
+
+
+Member Function Documentation
+
+
+
+
+
+
+ reference operator[]
+ (
+ difference_type
+ d
+ )
+ const [inline]
+
+
+
+
+
+
+
+
+
+
+
+
+
+For some reason operator[] provided by iterator_facade returns a custom class that is convertible to reference We require our own reference because it is registered in iterator_traits
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0026.png b/doc/html/g_i_l_0026.png
new file mode 100755
index 000000000..b37d51b9d
Binary files /dev/null and b/doc/html/g_i_l_0026.png differ
diff --git a/doc/html/g_i_l_0027.html b/doc/html/g_i_l_0027.html
new file mode 100755
index 000000000..29a69e8d9
--- /dev/null
+++ b/doc/html/g_i_l_0027.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+derived_image_type Member List This is the complete list of members for derived_image_type , including all inherited members.
Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0027.png b/doc/html/g_i_l_0027.png
new file mode 100755
index 000000000..e9b8492eb
Binary files /dev/null and b/doc/html/g_i_l_0027.png differ
diff --git a/doc/html/g_i_l_0028.html b/doc/html/g_i_l_0028.html
new file mode 100755
index 000000000..b7ea8a125
--- /dev/null
+++ b/doc/html/g_i_l_0028.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+ Generic Image Library : derived_image_type Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+derived_image_type Class Template Reference
+
+[derived_xxx_type ]
+ #include <metafunctions.hpp >
+
+List of all members.
Detailed Description
+template<typename Image, typename T = use_default, typename L = use_default, typename IsPlanar = use_default>
+ class boost::gil::derived_image_type< Image, T, L, IsPlanar >
+
+Constructs a homogeneous image type from a source image type by changing some of the properties.
+Use use_default for the properties of the source image that you want to keep.
+
+
+
+Public Types
+
+typedef image_type < channel_t,
+ layout_t, planar >::type type
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0028.png b/doc/html/g_i_l_0028.png
new file mode 100755
index 000000000..eed9bd8fb
Binary files /dev/null and b/doc/html/g_i_l_0028.png differ
diff --git a/doc/html/g_i_l_0029.html b/doc/html/g_i_l_0029.html
new file mode 100755
index 000000000..e1a9a45d2
--- /dev/null
+++ b/doc/html/g_i_l_0029.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+derived_iterator_type Member List This is the complete list of members for derived_iterator_type , including all inherited members.
Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0029.png b/doc/html/g_i_l_0029.png
new file mode 100755
index 000000000..e34962449
Binary files /dev/null and b/doc/html/g_i_l_0029.png differ
diff --git a/doc/html/g_i_l_0030.html b/doc/html/g_i_l_0030.html
new file mode 100755
index 000000000..e2060f842
--- /dev/null
+++ b/doc/html/g_i_l_0030.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ Generic Image Library : derived_iterator_type Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+derived_iterator_type Class Template Reference
+
+[derived_xxx_type ]
+ #include <metafunctions.hpp >
+
+List of all members.
Detailed Description
+template<typename Iterator, typename T = use_default, typename L = use_default, typename IsPlanar = use_default, typename IsStep = use_default, typename IsMutable = use_default>
+ class boost::gil::derived_iterator_type< Iterator, T, L, IsPlanar, IsStep, IsMutable >
+
+Constructs a pixel iterator type from a source pixel iterator type by changing some of the properties.
+Use use_default for the properties of the source view that you want to keep.
+
+
+
+Public Types
+
+typedef iterator_type < channel_t,
+ layout_t, planar, step, mut
+>::type type
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0030.png b/doc/html/g_i_l_0030.png
new file mode 100755
index 000000000..177497eed
Binary files /dev/null and b/doc/html/g_i_l_0030.png differ
diff --git a/doc/html/g_i_l_0031.html b/doc/html/g_i_l_0031.html
new file mode 100755
index 000000000..824412505
--- /dev/null
+++ b/doc/html/g_i_l_0031.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+derived_pixel_reference_type Member List This is the complete list of members for derived_pixel_reference_type , including all inherited members.
Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0031.png b/doc/html/g_i_l_0031.png
new file mode 100755
index 000000000..04896f8e8
Binary files /dev/null and b/doc/html/g_i_l_0031.png differ
diff --git a/doc/html/g_i_l_0032.html b/doc/html/g_i_l_0032.html
new file mode 100755
index 000000000..ec225a967
--- /dev/null
+++ b/doc/html/g_i_l_0032.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ Generic Image Library : derived_pixel_reference_type Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+derived_pixel_reference_type Class Template Reference
+
+[derived_xxx_type ]
+ #include <metafunctions.hpp >
+
+List of all members.
Detailed Description
+template<typename Ref, typename T = use_default, typename L = use_default, typename IsPlanar = use_default, typename IsMutable = use_default>
+ class boost::gil::derived_pixel_reference_type< Ref, T, L, IsPlanar, IsMutable >
+
+Constructs a pixel reference type from a source pixel reference type by changing some of the properties.
+Use use_default for the properties of the source view that you want to keep.
+
+
+
+Public Types
+
+typedef pixel_reference_type <
+ channel_t, layout_t, planar,
+ mut >::type type
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0033.html b/doc/html/g_i_l_0033.html
new file mode 100755
index 000000000..ba7d5fcf7
--- /dev/null
+++ b/doc/html/g_i_l_0033.html
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+derived_view_type Member List This is the complete list of members for derived_view_type , including all inherited members.
Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0034.html b/doc/html/g_i_l_0034.html
new file mode 100755
index 000000000..6b9d6642e
--- /dev/null
+++ b/doc/html/g_i_l_0034.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+ Generic Image Library : derived_view_type Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+derived_view_type Class Template Reference
+
+[derived_xxx_type ]
+ #include <metafunctions.hpp >
+
+List of all members.
Detailed Description
+template<typename View, typename T = use_default, typename L = use_default, typename IsPlanar = use_default, typename StepX = use_default, typename IsMutable = use_default>
+ class boost::gil::derived_view_type< View, T, L, IsPlanar, StepX, IsMutable >
+
+Constructs an image view type from a source view type by changing some of the properties.
+Use use_default for the properties of the source view that you want to keep.
+
+
+
+Public Types
+
+typedef view_type < channel_t,
+ layout_t, planar, step, mut
+>::type type
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0035.html b/doc/html/g_i_l_0035.html
new file mode 100755
index 000000000..132e37305
--- /dev/null
+++ b/doc/html/g_i_l_0035.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+step_iterator_adaptor Member List This is the complete list of members for step_iterator_adaptor , including all inherited members.
Generated on Thu Nov 8 21:53:24 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0036.html b/doc/html/g_i_l_0036.html
new file mode 100755
index 000000000..6c39b8a1d
--- /dev/null
+++ b/doc/html/g_i_l_0036.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ Generic Image Library : step_iterator_adaptor Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+step_iterator_adaptor Class Template Reference
+
+[step iterators ]
+ #include <step_iterator.hpp >
+
+List of all members.
Detailed Description
+template<typename Derived, typename Iterator, typename SFn>
+ class boost::gil::detail::step_iterator_adaptor< Derived, Iterator, SFn >
+
+An adaptor over an existing iterator that changes the step unit.
+
+(i.e. distance(it,it+1)) by a given predicate. Instead of calling base's operators ++, --, +=, -=, etc. the adaptor is using the passed policy object SFn for advancing and for computing the distance between iterators.
+
+
+
+Public Types
+
+typedef iterator_adaptor<
+ Derived, Iterator, use_default,
+ use_default, use_default,
+ typename SFn::difference_type > parent_t
+
+
+typedef std::iterator_traits<
+ Iterator >::difference_type base_difference_type
+
+
+typedef SFn::difference_type difference_type
+
+
+typedef std::iterator_traits<
+ Iterator >::reference reference
+
+Public Member Functions
+
+ step_iterator_adaptor (const Iterator &it, SFn step_fn=SFn())
+
+
+difference_type step () const
+
+Protected Attributes
+
+SFn _step_fn
+
+Friends
+
+class boost::iterator_core_access
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:24 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0037.html b/doc/html/g_i_l_0037.html
new file mode 100755
index 000000000..319e3fe3a
--- /dev/null
+++ b/doc/html/g_i_l_0037.html
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+image Member List This is the complete list of members for image , including all inherited members.
+ _view (defined in image )image
+ allocator () (defined in image )image [inline]
+ allocator () const (defined in image )image [inline]
+ allocator_type typedef (defined in image )image
+ const_view_t typedef (defined in image )image
+ coord_t typedef (defined in image )image
+ dimensions () const (defined in image )image [inline]
+ height () const (defined in image )image [inline]
+ image (std::size_t alignment=1, const Alloc alloc_in=Alloc()) (defined in image )image [inline, explicit]
+ image (const point_t &dimensions, std::size_t alignment=1) (defined in image )image [inline]
+ image (x_coord_t width, y_coord_t height, std::size_t alignment=1) (defined in image )image [inline]
+ image (const point_t &dimensions, const Pixel &p_in, std::size_t alignment, const Alloc alloc_in=Alloc()) (defined in image )image [inline]
+ image (x_coord_t width, y_coord_t height, const Pixel &p_in, std::size_t alignment, const Alloc alloc_in=Alloc()) (defined in image )image [inline]
+ image (const image &img) (defined in image )image [inline]
+ image (const image< P2, IP2, Alloc2 > &img) (defined in image )image [inline]
+ operator= (const image &img) (defined in image )image [inline]
+ operator= (const Img &img) (defined in image )image [inline]
+ point_t typedef (defined in image )image
+ recreate (const point_t &dims, std::size_t alignment=1) (defined in image )image [inline]
+ recreate (x_coord_t width, y_coord_t height, std::size_t alignment=1) (defined in image )image [inline]
+ recreate (const point_t &dims, const Pixel &p_in, std::size_t alignment) (defined in image )image [inline]
+ recreate (x_coord_t width, y_coord_t height, const Pixel &p_in, std::size_t alignment) (defined in image )image [inline]
+ swap (image &img) (defined in image )image [inline]
+ value_type typedef (defined in image )image
+ view_t typedef (defined in image )image
+ width () const (defined in image )image [inline]
+ x_coord_t typedef (defined in image )image
+ y_coord_t typedef (defined in image )image
+ ~image () (defined in image )image [inline]
+
Generated on Thu Nov 8 21:53:22 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0038.html b/doc/html/g_i_l_0038.html
new file mode 100755
index 000000000..dd2695cc4
--- /dev/null
+++ b/doc/html/g_i_l_0038.html
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+ Generic Image Library : image Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+image Class Template Reference
+
+[Models , Models ]
+ #include <image.hpp >
+
+List of all members.
Detailed Description
+template<typename Pixel, bool IsPlanar, typename Alloc = std::allocator<unsigned char>>
+ class boost::gil::image< Pixel, IsPlanar, Alloc >
+
+container interface over image view. Models ImageConcept , PixelBasedConcept
+
+A 2D container whose elements are pixels. It is templated over the pixel type, a boolean indicating whether it should be planar, and an optional allocator.
+Note that its element type does not have to be a pixel. image can be instantiated with any Regular element, in which case it models the weaker RandomAccess2DImageConcept and does not model PixelBasedConcept
+
+
+
+Public Types
+
+typedef Alloc::template rebind<
+ unsigned char >::other allocator_type
+
+
+typedef view_type_from_pixel <
+ Pixel, IsPlanar >::type view_t
+
+
+typedef view_t::const_t const_view_t
+
+
+typedef view_t::point_t point_t
+
+
+typedef view_t::coord_t coord_t
+
+
+typedef view_t::value_type value_type
+
+
+typedef coord_t x_coord_t
+
+
+typedef coord_t y_coord_t
+
+Public Member Functions
+
+const point_t & dimensions () const
+
+
+x_coord_t width () const
+
+
+y_coord_t height () const
+
+
+ image (std::size_t alignment=1, const Alloc alloc_in=Alloc())
+
+
+ image (const point_t &dimensions, std::size_t alignment=1)
+
+
+ image (x_coord_t width, y_coord_t height, std::size_t alignment=1)
+
+
+ image (const point_t &dimensions, const Pixel &p_in, std::size_t alignment, const Alloc alloc_in=Alloc())
+
+
+ image (x_coord_t width, y_coord_t height, const Pixel &p_in, std::size_t alignment, const Alloc alloc_in=Alloc())
+
+
+ image (const image &img)
+
+
+template<typename P2, bool IP2, typename Alloc2>
+ image (const image < P2, IP2, Alloc2 > &img)
+
+
+image & operator= (const image &img)
+
+
+template<typename Img>
+image & operator= (const Img &img)
+
+
+Alloc & allocator ()
+
+
+Alloc const & allocator () const
+
+
+void swap (image &img)
+
+
+void recreate (const point_t &dims, std::size_t alignment=1)
+
+
+void recreate (x_coord_t width, y_coord_t height, std::size_t alignment=1)
+
+
+void recreate (const point_t &dims, const Pixel &p_in, std::size_t alignment)
+
+
+void recreate (x_coord_t width, y_coord_t height, const Pixel &p_in, std::size_t alignment)
+
+Public Attributes
+
+view_t _view
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:22 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0039.html b/doc/html/g_i_l_0039.html
new file mode 100755
index 000000000..78d6021cd
--- /dev/null
+++ b/doc/html/g_i_l_0039.html
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+image_view Member List This is the complete list of members for image_view , including all inherited members.
Generated on Thu Nov 8 21:53:22 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0040.html b/doc/html/g_i_l_0040.html
new file mode 100755
index 000000000..0eba3d770
--- /dev/null
+++ b/doc/html/g_i_l_0040.html
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+ Generic Image Library : image_view Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+image_view Class Template Reference
+
+[Models , Models ]
+ #include <image_view.hpp >
+
+List of all members.
Detailed Description
+template<typename Loc>
+ class boost::gil::image_view< Loc >
+
+A lightweight object that interprets memory as a 2D array of pixels. Models ImageViewConcept ,PixelBasedConcept ,HasDynamicXStepTypeConcept ,HasDynamicYStepTypeConcept ,HasTransposedTypeConcept .
+
+Image view consists of a pixel 2D locator (defining the mechanism for navigating in 2D) and the image dimensions.
+Image views to images are what ranges are to STL containers. They are lightweight objects, that don't own the pixels. It is the user's responsibility that the underlying data remains valid for the lifetime of the image view.
+Similar to iterators and ranges, constness of views does not extend to constness of pixels. A const image_view does not allow changing its location in memory (resizing, moving) but does not prevent one from changing the pixels. The latter requires an image view whose value_type is const.
+Images have interfaces consistent with STL 1D random access containers, so they can be used directly in STL algorithms like:
std::fill (img.begin(), img.end(), red_pixel);
+
+In addition, horizontal, vertical and 2D random access iterators are provided.
+Note also that image_view does not require that its element type be a pixel. It could be instantiated with a locator whose value_type models only Regular . In this case the image view models the weaker RandomAccess2DImageViewConcept , and does not model PixelBasedConcept . Many generic algorithms don't require the elements to be pixels.
+
+
+
+1D navigation
+
+size_type size () const
+
+
+iterator begin () const
+
+
+iterator end () const
+
+
+reverse_iterator rbegin () const
+
+
+reverse_iterator rend () const
+
+
+reference operator[] (difference_type i) const
+
+
+iterator at (difference_type i) const
+
+
+iterator at (const point_t &p) const
+
+
+iterator at (x_coord_t x, y_coord_t y) const
+
+2-D navigation
+
+reference operator() (const point_t &p) const
+
+
+reference operator() (x_coord_t x, y_coord_t y) const
+
+
+template<std::size_t D>
+axis< D >::iterator axis_iterator (const point_t &p) const
+
+
+xy_locator xy_at (x_coord_t x, y_coord_t y) const
+
+
+locator xy_at (const point_t &p) const
+
+X navigation
+
+x_iterator x_at (x_coord_t x, y_coord_t y) const
+
+
+x_iterator x_at (const point_t &p) const
+
+
+x_iterator row_begin (y_coord_t y) const
+
+
+x_iterator row_end (y_coord_t y) const
+
+Y navigation
+
+y_iterator y_at (x_coord_t x, y_coord_t y) const
+
+
+y_iterator y_at (const point_t &p) const
+
+
+y_iterator col_begin (x_coord_t x) const
+
+
+y_iterator col_end (x_coord_t x) const
+
+Public Types
+
+typedef Loc::value_type value_type
+
+
+typedef Loc::reference reference
+
+
+typedef Loc::coord_t coord_t
+
+
+typedef coord_t difference_type
+
+
+typedef Loc::point_t point_t
+
+
+typedef Loc locator
+
+
+typedef image_view < typename
+Loc::const_t > const_t
+
+
+typedef iterator_from_2d <
+ Loc > iterator
+
+
+typedef std::reverse_iterator<
+ iterator > reverse_iterator
+
+
+typedef std::size_t size_type
+
+
+typedef locator xy_locator
+
+
+typedef xy_locator::x_iterator x_iterator
+
+
+typedef xy_locator::y_iterator y_iterator
+
+
+typedef xy_locator::x_coord_t x_coord_t
+
+
+typedef xy_locator::y_coord_t y_coord_t
+
+Public Member Functions
+
+template<typename View>
+ image_view (const View &iv)
+
+
+template<typename L2>
+ image_view (const point_t &sz, const L2 &loc)
+
+
+template<typename L2>
+ image_view (coord_t width, coord_t height, const L2 &loc)
+
+
+template<typename View>
+image_view & operator= (const View &iv)
+
+
+image_view & operator= (const image_view &iv)
+
+
+template<typename View>
+bool operator== (const View &v) const
+
+
+template<typename View>
+bool operator!= (const View &v) const
+
+
+const point_t & dimensions () const
+
+
+const locator & pixels () const
+
+
+x_coord_t width () const
+
+
+y_coord_t height () const
+
+
+std::size_t num_channels () const
+
+
+bool is_1d_traversable () const
+
+Static Public Attributes
+
+static const std::size_t num_dimensions = 2
+
+Friends
+
+class image_view
+
+
+template<typename L2>
+void swap (image_view < L2 > &x, image_view < L2 > &y)
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:22 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0041.html b/doc/html/g_i_l_0041.html
new file mode 100755
index 000000000..603cbdd2c
--- /dev/null
+++ b/doc/html/g_i_l_0041.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+iterator_from_2d Member List This is the complete list of members for iterator_from_2d , including all inherited members.
Generated on Thu Nov 8 21:53:22 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0042.html b/doc/html/g_i_l_0042.html
new file mode 100755
index 000000000..94559c0bc
--- /dev/null
+++ b/doc/html/g_i_l_0042.html
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+ Generic Image Library : iterator_from_2d Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+iterator_from_2d Class Template Reference
+
+[iterator_from_2d , Models ]
+ #include <iterator_from_2d.hpp >
+
+List of all members.
Detailed Description
+template<typename Loc2>
+ class boost::gil::iterator_from_2d< Loc2 >
+
+Provides 1D random-access navigation to the pixels of the image. Models: PixelIteratorConcept , PixelBasedConcept , HasDynamicXStepTypeConcept .
+
+Pixels are traversed from the top to the bottom row and from the left to the right within each row
+
+
+
+Public Types
+
+typedef iterator_facade< iterator_from_2d <
+ Loc2 >, typename Loc2::value_type,
+ random_access_traversal_tag,
+ typename Loc2::reference,
+ typename Loc2::coord_t > parent_t
+
+
+typedef parent_t::reference reference
+
+
+typedef parent_t::difference_type difference_type
+
+
+typedef Loc2::x_iterator x_iterator
+
+
+typedef Loc2::point_t point_t
+
+Public Member Functions
+
+int width () const
+
+
+int x_pos () const
+
+
+int y_pos () const
+
+reference operator[] (difference_type d) const
+
+
+bool is_1d_traversable () const
+
+
+x_iterator & x ()
+
+
+ iterator_from_2d (const Loc2 &p, int width, int x=0, int y=0)
+
+
+ iterator_from_2d (const iterator_from_2d &pit)
+
+
+template<typename Loc>
+ iterator_from_2d (const iterator_from_2d < Loc > &pit)
+
+Friends
+
+class iterator_from_2d
+
+
+class boost::iterator_core_access
+
+
+Member Function Documentation
+
+
+
+
+
+
+ reference operator[]
+ (
+ difference_type
+ d
+ )
+ const [inline]
+
+
+
+
+
+
+
+
+
+
+
+
+
+For some reason operator[] provided by iterator_adaptor returns a custom class that is convertible to reference We require our own reference because it is registered in iterator_traits
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:22 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0043.html b/doc/html/g_i_l_0043.html
new file mode 100755
index 000000000..ff2f76f7d
--- /dev/null
+++ b/doc/html/g_i_l_0043.html
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+memory_based_2d_locator Member List This is the complete list of members for memory_based_2d_locator , including all inherited members.
+ axis_iterator () (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ axis_iterator () const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ axis_iterator (const point_t &p) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ cache_location (const difference_type &d) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ cache_location (x_coord_t dx, y_coord_t dy) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ cache_location (const difference_type &d) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ cache_location (x_coord_t dx, y_coord_t dy) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ cached_location_t typedef (defined in memory_based_2d_locator )memory_based_2d_locator
+ const_t typedef (defined in memory_based_2d_locator )memory_based_2d_locator
+ coord_t typedef (defined in memory_based_2d_locator )memory_based_2d_locator
+ difference_type typedef (defined in memory_based_2d_locator )memory_based_2d_locator
+ is_1d_traversable (x_coord_t width) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ memory_based_2d_locator (defined in memory_based_2d_locator )memory_based_2d_locator [friend]
+ memory_based_2d_locator () (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ memory_based_2d_locator (const StepIterator &yit) (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ memory_based_2d_locator (const memory_based_2d_locator< SI > &loc, coord_t y_step) (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ memory_based_2d_locator (const memory_based_2d_locator< SI > &loc, coord_t x_step, coord_t y_step, bool transpose=false) (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ memory_based_2d_locator (x_iterator xit, std::ptrdiff_t row_bytes) (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ memory_based_2d_locator (const memory_based_2d_locator< X > &pl) (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ memory_based_2d_locator (const memory_based_2d_locator &pl) (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ num_dimensions (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [static]
+ operator * () const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ operator!= (const memory_based_2d_locator< StepIterator > &p) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ operator() (x_coord_t dx, y_coord_t dy) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ operator() (x_coord_t dx, y_coord_t dy) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ operator+ (const difference_type &d) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ operator+= (const difference_type &d) (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ operator+= (const difference_type &d) (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ operator- (const difference_type &d) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ operator-= (const difference_type &d) (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ operator-= (const difference_type &d) (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ operator== (const this_t &p) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ operator[] (const difference_type &d) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ operator[] (const cached_location_t &loc) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ operator[] (const difference_type &d) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ parent_t typedef (defined in memory_based_2d_locator )memory_based_2d_locator
+ pixel_size () const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ point_t typedef (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator >
+ reference typedef (defined in memory_based_2d_locator )memory_based_2d_locator
+ row_size () const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ value_type typedef (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator >
+ x () const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ x () (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ x_at (x_coord_t dx, y_coord_t dy) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ x_at (const difference_type &d) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ x_at (x_coord_t dx, y_coord_t dy) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ x_at (const difference_type &d) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ x_coord_t typedef (defined in memory_based_2d_locator )memory_based_2d_locator
+ x_iterator typedef (defined in memory_based_2d_locator )memory_based_2d_locator
+ xy_at (x_coord_t dx, y_coord_t dy) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ xy_at (const difference_type &d) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ xy_at (x_coord_t dx, y_coord_t dy) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ xy_at (const difference_type &d) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ y () const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ y () (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ y_at (x_coord_t dx, y_coord_t dy) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ y_at (const difference_type &d) const (defined in pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > )pixel_2d_locator_base< memory_based_2d_locator< StepIterator >, iterator_adaptor_get_base< StepIterator >::type, StepIterator > [inline]
+ y_coord_t typedef (defined in memory_based_2d_locator )memory_based_2d_locator
+ y_distance_to (const this_t &p2, x_coord_t xDiff) const (defined in memory_based_2d_locator )memory_based_2d_locator [inline]
+ y_iterator typedef (defined in memory_based_2d_locator )memory_based_2d_locator
+
Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0044.html b/doc/html/g_i_l_0044.html
new file mode 100755
index 000000000..9a4a89291
--- /dev/null
+++ b/doc/html/g_i_l_0044.html
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+ Generic Image Library : memory_based_2d_locator Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+memory_based_2d_locator Class Template Reference
+
+[Models , Models ]
+ #include <locator.hpp >
+
+
Inheritance diagram for memory_based_2d_locator:
+
+
+
+
+List of all members. Detailed Description
+template<typename StepIterator>
+ class boost::gil::memory_based_2d_locator< StepIterator >
+
+Memory-based pixel locator. Models: PixelLocatorConcept ,HasDynamicXStepTypeConcept ,HasDynamicYStepTypeConcept ,HasTransposedTypeConcept
+The class takes a step iterator as a parameter. The step iterator provides navigation along the vertical axis while its base iterator provides horizontal navigation.
+
+Each instantiation is optimal in terms of size and efficiency. For example, xy locator over interleaved rgb image results in a step iterator consisting of one std::ptrdiff_t for the row size and one native pointer (8 bytes total). ++locator.x() resolves to pointer increment. At the other extreme, a 2D navigation of the even pixels of a planar CMYK image results in a step iterator consisting of one std::ptrdiff_t for the doubled row size, and one step iterator consisting of one std::ptrdiff_t for the horizontal step of two and a CMYK planar_pixel_iterator consisting of 4 pointers (24 bytes). In this case ++locator.x() results in four native pointer additions.
+Note also that memory_based_2d_locator does not require that its element type be a pixel. It could be instantiated with an iterator whose value_type models only Regular . In this case the locator models the weaker RandomAccess2DLocatorConcept , and does not model PixelBasedConcept . Many generic algorithms don't require the elements to be pixels.
+
+
+
+Public Types
+
+typedef pixel_2d_locator_base <
+ memory_based_2d_locator <
+ StepIterator >, typename
+iterator_adaptor_get_base<
+ StepIterator >::type, StepIterator > parent_t
+
+
+typedef memory_based_2d_locator <
+ typename const_iterator_type<
+ StepIterator >::type > const_t
+
+
+typedef parent_t::coord_t coord_t
+
+
+typedef parent_t::x_coord_t x_coord_t
+
+
+typedef parent_t::y_coord_t y_coord_t
+
+
+typedef parent_t::x_iterator x_iterator
+
+
+typedef parent_t::y_iterator y_iterator
+
+
+typedef parent_t::difference_type difference_type
+
+
+typedef parent_t::reference reference
+
+
+typedef std::ptrdiff_t cached_location_t
+
+Public Member Functions
+
+ memory_based_2d_locator (const StepIterator &yit)
+
+
+template<typename SI>
+ memory_based_2d_locator (const memory_based_2d_locator < SI > &loc, coord_t y_step)
+
+
+template<typename SI>
+ memory_based_2d_locator (const memory_based_2d_locator < SI > &loc, coord_t x_step, coord_t y_step, bool transpose=false)
+
+
+ memory_based_2d_locator (x_iterator xit, std::ptrdiff_t row_bytes)
+
+
+template<typename X>
+ memory_based_2d_locator (const memory_based_2d_locator < X > &pl)
+
+
+ memory_based_2d_locator (const memory_based_2d_locator &pl)
+
+
+bool operator== (const this_t &p) const
+
+
+x_iterator const & x () const
+
+
+y_iterator const & y () const
+
+
+x_iterator & x ()
+
+
+y_iterator & y ()
+
+
+x_iterator x_at (x_coord_t dx, y_coord_t dy) const
+
+
+x_iterator x_at (const difference_type &d) const
+
+
+this_t xy_at (x_coord_t dx, y_coord_t dy) const
+
+
+this_t xy_at (const difference_type &d) const
+
+
+reference operator() (x_coord_t dx, y_coord_t dy) const
+
+
+reference operator[] (const difference_type &d) const
+
+
+this_t & operator+= (const difference_type &d)
+
+
+this_t & operator-= (const difference_type &d)
+
+
+cached_location_t cache_location (const difference_type &d) const
+
+
+cached_location_t cache_location (x_coord_t dx, y_coord_t dy) const
+
+
+reference operator[] (const cached_location_t &loc) const
+
+
+std::ptrdiff_t row_size () const
+
+
+std::ptrdiff_t pixel_size () const
+
+
+bool is_1d_traversable (x_coord_t width) const
+
+
+std::ptrdiff_t y_distance_to (const this_t &p2, x_coord_t xDiff) const
+
+Friends
+
+class memory_based_2d_locator
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0045.html b/doc/html/g_i_l_0045.html
new file mode 100755
index 000000000..74d18f58c
--- /dev/null
+++ b/doc/html/g_i_l_0045.html
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+memory_based_step_iterator Member List This is the complete list of members for memory_based_step_iterator , including all inherited members.
+ _step_fn (defined in step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > )step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > [protected]
+ base () (defined in memory_based_step_iterator )memory_based_step_iterator [inline]
+ base () const (defined in memory_based_step_iterator )memory_based_step_iterator [inline]
+ base_difference_type typedef (defined in step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > )step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > >
+ boost::iterator_core_access (defined in step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > )step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > [friend]
+ difference_type typedef (defined in memory_based_step_iterator )memory_based_step_iterator
+ memory_based_step_iterator () (defined in memory_based_step_iterator )memory_based_step_iterator [inline]
+ memory_based_step_iterator (Iterator it, std::ptrdiff_t memunit_step) (defined in memory_based_step_iterator )memory_based_step_iterator [inline]
+ memory_based_step_iterator (const memory_based_step_iterator< I2 > &it) (defined in memory_based_step_iterator )memory_based_step_iterator [inline]
+ operator[] (difference_type d) const memory_based_step_iterator [inline]
+ parent_t typedef (defined in memory_based_step_iterator )memory_based_step_iterator
+ reference typedef (defined in memory_based_step_iterator )memory_based_step_iterator
+ set_step (std::ptrdiff_t memunit_step) (defined in memory_based_step_iterator )memory_based_step_iterator [inline]
+ step () const (defined in step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > )step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > [inline]
+ step_iterator_adaptor () (defined in step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > )step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > [inline]
+ step_iterator_adaptor (const Iterator &it, memunit_step_fn< Iterator >step_fn=memunit_step_fn< Iterator >()) (defined in step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > )step_iterator_adaptor< memory_based_step_iterator< Iterator >, Iterator, memunit_step_fn< Iterator > > [inline]
+ x_iterator typedef (defined in memory_based_step_iterator )memory_based_step_iterator
+
Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0046.html b/doc/html/g_i_l_0046.html
new file mode 100755
index 000000000..47db95f97
--- /dev/null
+++ b/doc/html/g_i_l_0046.html
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+ Generic Image Library : memory_based_step_iterator Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+memory_based_step_iterator Class Template Reference
+
+[step iterators , Models ]
+ #include <step_iterator.hpp >
+
+
Inheritance diagram for memory_based_step_iterator:
+
+
+
+
+List of all members. Detailed Description
+template<typename Iterator>
+ class boost::gil::memory_based_step_iterator< Iterator >
+
+Iterator with dynamically specified step in memory units (bytes or bits). Models StepIteratorConcept , IteratorAdaptorConcept , MemoryBasedIteratorConcept , PixelIteratorConcept , HasDynamicXStepTypeConcept .
+
+A refinement of step_iterator_adaptor that uses a dynamic parameter for the step which is specified in memory units, such as bytes or bits
+Pixel step iterators are used to provide iteration over non-adjacent pixels. Common use is a vertical traversal, where the step is the row stride.
+Another application is as a sub-channel view. For example, a red intensity image over interleaved RGB data would use a step iterator adaptor with step sizeof(channel_t)*3 In the latter example the step size could be fixed at compile time for efficiency. Compile-time fixed step can be implemented by providing a step function object that takes the step as a template
+
+
+
+Public Types
+
+typedef detail::step_iterator_adaptor <
+ memory_based_step_iterator <
+ Iterator >, Iterator, memunit_step_fn <
+ Iterator > > parent_t
+
+
+typedef parent_t::reference reference
+
+
+typedef parent_t::difference_type difference_type
+
+
+typedef Iterator x_iterator
+
+Public Member Functions
+
+ memory_based_step_iterator (Iterator it, std::ptrdiff_t memunit_step)
+
+
+template<typename I2>
+ memory_based_step_iterator (const memory_based_step_iterator < I2 > &it)
+
+reference operator[] (difference_type d) const
+
+
+void set_step (std::ptrdiff_t memunit_step)
+
+
+x_iterator & base ()
+
+
+x_iterator const & base () const
+
+
+Member Function Documentation
+
+
+
+
+
+
+ reference operator[]
+ (
+ difference_type
+ d
+ )
+ const [inline]
+
+
+
+
+
+
+
+
+
+
+
+
+
+For some reason operator[] provided by iterator_adaptor returns a custom class that is convertible to reference We require our own reference because it is registered in iterator_traits
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0047.html b/doc/html/g_i_l_0047.html
new file mode 100755
index 000000000..10df67538
--- /dev/null
+++ b/doc/html/g_i_l_0047.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+packed_channel_reference< BitField, FirstBit, NumBits, false > Member List This is the complete list of members for packed_channel_reference< BitField, FirstBit, NumBits, false > , including all inherited members.
+ const_reference typedef (defined in packed_channel_reference< BitField, FirstBit, NumBits, false > )packed_channel_reference< BitField, FirstBit, NumBits, false >
+ first_bit () const (defined in packed_channel_reference< BitField, FirstBit, NumBits, false > )packed_channel_reference< BitField, FirstBit, NumBits, false > [inline]
+ get () const (defined in packed_channel_reference< BitField, FirstBit, NumBits, false > )packed_channel_reference< BitField, FirstBit, NumBits, false > [inline]
+ integer_t typedef (defined in packed_channel_reference< BitField, FirstBit, NumBits, false > )packed_channel_reference< BitField, FirstBit, NumBits, false >
+ mutable_reference typedef (defined in packed_channel_reference< BitField, FirstBit, NumBits, false > )packed_channel_reference< BitField, FirstBit, NumBits, false >
+ packed_channel_reference (const void *data_ptr) (defined in packed_channel_reference< BitField, FirstBit, NumBits, false > )packed_channel_reference< BitField, FirstBit, NumBits, false > [inline, explicit]
+ packed_channel_reference (const packed_channel_reference &ref) (defined in packed_channel_reference< BitField, FirstBit, NumBits, false > )packed_channel_reference< BitField, FirstBit, NumBits, false > [inline]
+ packed_channel_reference (const mutable_reference &ref) (defined in packed_channel_reference< BitField, FirstBit, NumBits, false > )packed_channel_reference< BitField, FirstBit, NumBits, false > [inline]
+ packed_channel_reference< BitField, FirstBit, NumBits, true > (defined in packed_channel_reference< BitField, FirstBit, NumBits, false > )packed_channel_reference< BitField, FirstBit, NumBits, false > [friend]
+
Generated on Thu Nov 8 21:53:21 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0048.html b/doc/html/g_i_l_0048.html
new file mode 100755
index 000000000..9e61f3f55
--- /dev/null
+++ b/doc/html/g_i_l_0048.html
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+ Generic Image Library : packed_channel_reference< BitField, FirstBit, NumBits, false > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+packed_channel_reference< BitField, FirstBit, NumBits, false > Class Template Reference
+
+[packed_channel_reference ]
+ #include <channel.hpp >
+
+List of all members.
Detailed Description
+template<typename BitField, int FirstBit, int NumBits>
+ class boost::gil::packed_channel_reference< BitField, FirstBit, NumBits, false >
+
+A constant subbyte channel reference whose bit offset is fixed at compile time. Models ChannelConcept .
+
+
+
+Public Types
+
+typedef const packed_channel_reference<
+ BitField, FirstBit, NumBits,
+ false > const_reference
+
+
+typedef const packed_channel_reference<
+ BitField, FirstBit, NumBits,
+ true > mutable_reference
+
+
+typedef parent_t::integer_t integer_t
+
+Public Member Functions
+
+ packed_channel_reference (const void *data_ptr)
+
+
+ packed_channel_reference (const packed_channel_reference &ref)
+
+
+ packed_channel_reference (const mutable_reference &ref)
+
+
+unsigned first_bit () const
+
+
+integer_t get () const
+
+Friends
+
+class packed_channel_reference< BitField, FirstBit, NumBits, true >
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:21 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0049.html b/doc/html/g_i_l_0049.html
new file mode 100755
index 000000000..e04beeb38
--- /dev/null
+++ b/doc/html/g_i_l_0049.html
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+packed_channel_reference< BitField, FirstBit, NumBits, true > Member List This is the complete list of members for packed_channel_reference< BitField, FirstBit, NumBits, true > , including all inherited members.
+ const_reference typedef (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true >
+ first_bit () const (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true > [inline]
+ get () const (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true > [inline]
+ integer_t typedef (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true >
+ mutable_reference typedef (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true >
+ operator= (integer_t value) const (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true > [inline]
+ operator= (const mutable_reference &ref) const (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true > [inline]
+ operator= (const const_reference &ref) const (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true > [inline]
+ operator= (const packed_dynamic_channel_reference< BitField, NumBits, Mutable1 > &ref) const (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true > [inline]
+ packed_channel_reference (void *data_ptr) (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true > [inline, explicit]
+ packed_channel_reference (const packed_channel_reference &ref) (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true > [inline]
+ packed_channel_reference< BitField, FirstBit, NumBits, false > (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true > [friend]
+ set_unsafe (integer_t value) const (defined in packed_channel_reference< BitField, FirstBit, NumBits, true > )packed_channel_reference< BitField, FirstBit, NumBits, true > [inline]
+
Generated on Thu Nov 8 21:53:21 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0050.html b/doc/html/g_i_l_0050.html
new file mode 100755
index 000000000..16f0cfb45
--- /dev/null
+++ b/doc/html/g_i_l_0050.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+ Generic Image Library : packed_channel_reference< BitField, FirstBit, NumBits, true > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+packed_channel_reference< BitField, FirstBit, NumBits, true > Class Template Reference
+
+[packed_channel_reference ]
+ #include <channel.hpp >
+
+List of all members.
Detailed Description
+template<typename BitField, int FirstBit, int NumBits>
+ class boost::gil::packed_channel_reference< BitField, FirstBit, NumBits, true >
+
+A mutable subbyte channel reference whose bit offset is fixed at compile time. Models ChannelConcept .
+
+
+
+Public Types
+
+typedef const packed_channel_reference<
+ BitField, FirstBit, NumBits,
+ false > const_reference
+
+
+typedef const packed_channel_reference<
+ BitField, FirstBit, NumBits,
+ true > mutable_reference
+
+
+typedef parent_t::integer_t integer_t
+
+Public Member Functions
+
+ packed_channel_reference (void *data_ptr)
+
+
+ packed_channel_reference (const packed_channel_reference &ref)
+
+
+const packed_channel_reference & operator= (integer_t value) const
+
+
+const packed_channel_reference & operator= (const mutable_reference &ref) const
+
+
+const packed_channel_reference & operator= (const const_reference &ref) const
+
+
+template<bool Mutable1>
+const packed_channel_reference & operator= (const packed_dynamic_channel_reference< BitField, NumBits, Mutable1 > &ref) const
+
+
+unsigned first_bit () const
+
+
+integer_t get () const
+
+
+void set_unsafe (integer_t value) const
+
+Friends
+
+class packed_channel_reference< BitField, FirstBit, NumBits, false >
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:21 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0051.html b/doc/html/g_i_l_0051.html
new file mode 100755
index 000000000..308dfcb41
--- /dev/null
+++ b/doc/html/g_i_l_0051.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+packed_channel_value Member List This is the complete list of members for packed_channel_value , including all inherited members.
Generated on Thu Nov 8 21:53:21 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0052.html b/doc/html/g_i_l_0052.html
new file mode 100755
index 000000000..b25165dcb
--- /dev/null
+++ b/doc/html/g_i_l_0052.html
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+ Generic Image Library : packed_channel_value Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+packed_channel_value Class Template Reference
+
+[packed_channel_value ]
+ #include <channel.hpp >
+
+List of all members.
Detailed Description
+template<int NumBits>
+ class boost::gil::packed_channel_value< NumBits >
+
+The value of a subbyte channel. Models: ChannelValueConcept .
+
+
+
+Public Types
+
+typedef detail::min_fast_uint<
+ NumBits >::type integer_t
+
+
+typedef packed_channel_value value_type
+
+
+typedef value_type & reference
+
+
+typedef const value_type & const_reference
+
+
+typedef value_type * pointer
+
+
+typedef const value_type * const_pointer
+
+Public Member Functions
+
+ BOOST_STATIC_CONSTANT (bool, is_mutable=true)
+
+
+ packed_channel_value (integer_t v)
+
+
+ packed_channel_value (const packed_channel_value &v)
+
+
+template<typename Scalar>
+ packed_channel_value (Scalar v)
+
+
+ operator integer_t () const
+
+Static Public Member Functions
+
+static value_type min_value ()
+
+
+static value_type max_value ()
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:21 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0053.html b/doc/html/g_i_l_0053.html
new file mode 100755
index 000000000..8f0657795
--- /dev/null
+++ b/doc/html/g_i_l_0053.html
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+packed_dynamic_channel_reference< BitField, NumBits, false > Member List This is the complete list of members for packed_dynamic_channel_reference< BitField, NumBits, false > , including all inherited members.
+ const_reference typedef (defined in packed_dynamic_channel_reference< BitField, NumBits, false > )packed_dynamic_channel_reference< BitField, NumBits, false >
+ first_bit () const (defined in packed_dynamic_channel_reference< BitField, NumBits, false > )packed_dynamic_channel_reference< BitField, NumBits, false > [inline]
+ get () const (defined in packed_dynamic_channel_reference< BitField, NumBits, false > )packed_dynamic_channel_reference< BitField, NumBits, false > [inline]
+ integer_t typedef (defined in packed_dynamic_channel_reference< BitField, NumBits, false > )packed_dynamic_channel_reference< BitField, NumBits, false >
+ mutable_reference typedef (defined in packed_dynamic_channel_reference< BitField, NumBits, false > )packed_dynamic_channel_reference< BitField, NumBits, false >
+ packed_dynamic_channel_reference (const void *data_ptr, unsigned first_bit) (defined in packed_dynamic_channel_reference< BitField, NumBits, false > )packed_dynamic_channel_reference< BitField, NumBits, false > [inline]
+ packed_dynamic_channel_reference (const const_reference &ref) (defined in packed_dynamic_channel_reference< BitField, NumBits, false > )packed_dynamic_channel_reference< BitField, NumBits, false > [inline]
+ packed_dynamic_channel_reference (const mutable_reference &ref) (defined in packed_dynamic_channel_reference< BitField, NumBits, false > )packed_dynamic_channel_reference< BitField, NumBits, false > [inline]
+ packed_dynamic_channel_reference< BitField, NumBits, true > (defined in packed_dynamic_channel_reference< BitField, NumBits, false > )packed_dynamic_channel_reference< BitField, NumBits, false > [friend]
+
Generated on Thu Nov 8 21:53:21 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0054.html b/doc/html/g_i_l_0054.html
new file mode 100755
index 000000000..4fdf6db3f
--- /dev/null
+++ b/doc/html/g_i_l_0054.html
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+ Generic Image Library : packed_dynamic_channel_reference< BitField, NumBits, false > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+packed_dynamic_channel_reference< BitField, NumBits, false > Class Template Reference
+
+[packed_dynamic_channel_reference ]
+ #include <channel.hpp >
+
+List of all members.
Detailed Description
+template<typename BitField, int NumBits>
+ class boost::gil::packed_dynamic_channel_reference< BitField, NumBits, false >
+
+Models a constant subbyte channel reference whose bit offset is a runtime parameter. Models ChannelConcept Same as packed_channel_reference, except that the offset is a runtime parameter.
+
+
+
+Public Types
+
+typedef const packed_dynamic_channel_reference<
+ BitField, NumBits, false > const_reference
+
+
+typedef const packed_dynamic_channel_reference<
+ BitField, NumBits, true > mutable_reference
+
+
+typedef parent_t::integer_t integer_t
+
+Public Member Functions
+
+ packed_dynamic_channel_reference (const void *data_ptr, unsigned first_bit)
+
+
+ packed_dynamic_channel_reference (const const_reference &ref)
+
+
+ packed_dynamic_channel_reference (const mutable_reference &ref)
+
+
+unsigned first_bit () const
+
+
+integer_t get () const
+
+Friends
+
+class packed_dynamic_channel_reference< BitField, NumBits, true >
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:21 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0055.html b/doc/html/g_i_l_0055.html
new file mode 100755
index 000000000..4a8e9377a
--- /dev/null
+++ b/doc/html/g_i_l_0055.html
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+packed_dynamic_channel_reference< BitField, NumBits, true > Member List This is the complete list of members for packed_dynamic_channel_reference< BitField, NumBits, true > , including all inherited members.
+ const_reference typedef (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true >
+ first_bit () const (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true > [inline]
+ get () const (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true > [inline]
+ integer_t typedef (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true >
+ mutable_reference typedef (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true >
+ operator= (integer_t value) const (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true > [inline]
+ operator= (const mutable_reference &ref) const (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true > [inline]
+ operator= (const const_reference &ref) const (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true > [inline]
+ operator= (const packed_channel_reference< BitField1, FirstBit1, NumBits, Mutable1 > &ref) const (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true > [inline]
+ packed_dynamic_channel_reference (void *data_ptr, unsigned first_bit) (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true > [inline]
+ packed_dynamic_channel_reference (const packed_dynamic_channel_reference &ref) (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true > [inline]
+ packed_dynamic_channel_reference< BitField, NumBits, false > (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true > [friend]
+ set_unsafe (integer_t value) const (defined in packed_dynamic_channel_reference< BitField, NumBits, true > )packed_dynamic_channel_reference< BitField, NumBits, true > [inline]
+
Generated on Thu Nov 8 21:53:21 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0056.html b/doc/html/g_i_l_0056.html
new file mode 100755
index 000000000..e3d304c0b
--- /dev/null
+++ b/doc/html/g_i_l_0056.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+ Generic Image Library : packed_dynamic_channel_reference< BitField, NumBits, true > Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+packed_dynamic_channel_reference< BitField, NumBits, true > Class Template Reference
+
+[packed_dynamic_channel_reference ]
+ #include <channel.hpp >
+
+List of all members.
Detailed Description
+template<typename BitField, int NumBits>
+ class boost::gil::packed_dynamic_channel_reference< BitField, NumBits, true >
+
+Models a mutable subbyte channel reference whose bit offset is a runtime parameter. Models ChannelConcept Same as packed_channel_reference, except that the offset is a runtime parameter.
+
+
+
+Public Types
+
+typedef const packed_dynamic_channel_reference<
+ BitField, NumBits, false > const_reference
+
+
+typedef const packed_dynamic_channel_reference<
+ BitField, NumBits, true > mutable_reference
+
+
+typedef parent_t::integer_t integer_t
+
+Public Member Functions
+
+ packed_dynamic_channel_reference (void *data_ptr, unsigned first_bit)
+
+
+ packed_dynamic_channel_reference (const packed_dynamic_channel_reference &ref)
+
+
+const packed_dynamic_channel_reference & operator= (integer_t value) const
+
+
+const packed_dynamic_channel_reference & operator= (const mutable_reference &ref) const
+
+
+const packed_dynamic_channel_reference & operator= (const const_reference &ref) const
+
+
+template<typename BitField1, int FirstBit1, bool Mutable1>
+const packed_dynamic_channel_reference & operator= (const packed_channel_reference< BitField1, FirstBit1, NumBits, Mutable1 > &ref) const
+
+
+unsigned first_bit () const
+
+
+integer_t get () const
+
+
+void set_unsafe (integer_t value) const
+
+Friends
+
+class packed_dynamic_channel_reference< BitField, NumBits, false >
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:21 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0057.html b/doc/html/g_i_l_0057.html
new file mode 100755
index 000000000..94e2b69ca
--- /dev/null
+++ b/doc/html/g_i_l_0057.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+pixel_2d_locator_base Member List This is the complete list of members for pixel_2d_locator_base , including all inherited members.
Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0058.html b/doc/html/g_i_l_0058.html
new file mode 100755
index 000000000..88f8bffd7
--- /dev/null
+++ b/doc/html/g_i_l_0058.html
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+ Generic Image Library : pixel_2d_locator_base Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+pixel_2d_locator_base Class Template Reference
+
+[Models , Models ]
+ #include <locator.hpp >
+
+List of all members.
Detailed Description
+template<typename Loc, typename XIterator, typename YIterator>
+ class boost::gil::pixel_2d_locator_base< Loc, XIterator, YIterator >
+
+base class for models of PixelLocatorConcept
+Pixel locator is similar to a pixel iterator, but allows for 2D navigation of pixels within an image view. It has a 2D difference_type and supports random access operations like:
+
+
difference_type offset2(2,3);
+ locator+=offset2;
+ locator[offset2]=my_pixel;
+
+In addition, each coordinate acts as a random-access iterator that can be modified separately: "++locator.x()" or "locator.y()+=10" thereby moving the locator horizontally or vertically.
+It is called a locator because it doesn't implement the complete interface of a random access iterator. For example, increment and decrement operations don't make sense (no way to specify dimension). Also 2D difference between two locators cannot be computed without knowledge of the X position within the image.
+This base class provides most of the methods and typedefs needed to create a model of a locator. GIL provides two locator models as subclasses of pixel_2d_locator_base . A memory-based locator, memory_based_2d_locator and a virtual locator, virtual_2d_locator . The minimum functionality a subclass must provide is this:
class my_locator : public pixel_2d_locator_base<my_locator, ..., ...> {
+ typedef ... const_t;
+
+ template <typename Deref> struct add_deref {
+ typedef ... type;
+ static type make(const my_locator& loc, const Deref& d);
+ };
+
+ my_locator();
+ my_locator(const my_locator& pl);
+
+
+ my_locator(const my_locator& loc, coord_t y_step);
+ my_locator(const my_locator& loc, coord_t x_step, coord_t y_step, bool transpose);
+
+ bool operator==(const my_locator& p) const ;
+
+
+ x_iterator& x();
+ y_iterator& y();
+ x_iterator const & x() const ;
+ y_iterator const & y() const ;
+
+
+ y_coord_t y_distance_to(const my_locator& loc2, x_coord_t xDiff) const ;
+
+
+
+ bool is_1d_traversable(x_coord_t width) const ;
+ };
+
+Models may choose to override some of the functions in the base class with more efficient versions.
+
+
+
+Public Types
+
+typedef XIterator x_iterator
+
+
+typedef YIterator y_iterator
+
+
+typedef std::iterator_traits<
+ x_iterator >::value_type value_type
+
+
+typedef std::iterator_traits<
+ x_iterator >::reference reference
+
+
+typedef std::iterator_traits<
+ x_iterator >::difference_type coord_t
+
+
+typedef point2 < coord_t > difference_type
+
+
+typedef difference_type point_t
+
+
+typedef point_t::template
+axis< 0 >::coord_t x_coord_t
+
+
+typedef point_t::template
+axis< 1 >::coord_t y_coord_t
+
+
+typedef difference_type cached_location_t
+
+Public Member Functions
+
+bool operator!= (const Loc &p) const
+
+
+x_iterator x_at (x_coord_t dx, y_coord_t dy) const
+
+
+x_iterator x_at (const difference_type &d) const
+
+
+y_iterator y_at (x_coord_t dx, y_coord_t dy) const
+
+
+y_iterator y_at (const difference_type &d) const
+
+
+Loc xy_at (x_coord_t dx, y_coord_t dy) const
+
+
+Loc xy_at (const difference_type &d) const
+
+
+template<std::size_t D>
+axis< D >::iterator & axis_iterator ()
+
+
+template<std::size_t D>
+axis< D >::iterator const & axis_iterator () const
+
+
+template<std::size_t D>
+axis< D >::iterator axis_iterator (const point_t &p) const
+
+
+reference operator() (x_coord_t dx, y_coord_t dy) const
+
+
+reference operator[] (const difference_type &d) const
+
+
+reference operator * () const
+
+
+Loc & operator+= (const difference_type &d)
+
+
+Loc & operator-= (const difference_type &d)
+
+
+Loc operator+ (const difference_type &d) const
+
+
+Loc operator- (const difference_type &d) const
+
+
+cached_location_t cache_location (const difference_type &d) const
+
+
+cached_location_t cache_location (x_coord_t dx, y_coord_t dy) const
+
+Static Public Attributes
+
+static const std::size_t num_dimensions = 2
+
+Friends
+
+class pixel_2d_locator
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0059.html b/doc/html/g_i_l_0059.html
new file mode 100755
index 000000000..f30c0d2ad
--- /dev/null
+++ b/doc/html/g_i_l_0059.html
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+point2 Member List This is the complete list of members for point2 , including all inherited members.
Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0060.html b/doc/html/g_i_l_0060.html
new file mode 100755
index 000000000..1f93566cb
--- /dev/null
+++ b/doc/html/g_i_l_0060.html
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+ Generic Image Library : point2 Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+point2 Class Template Reference
+
+[Models ]
+ #include <utilities.hpp >
+
+List of all members.
Detailed Description
+template<typename T>
+ class boost::gil::point2< T >
+
+2D point both axes of which have the same dimension type
+Models: Point2DConcept
+
+
+
+Public Types
+
+typedef T value_type
+
+Public Member Functions
+
+ point2 (T newX, T newY)
+
+
+ point2 (const point2 &p)
+
+
+point2 & operator= (const point2 &p)
+
+
+point2 operator<< (int shift) const
+
+
+point2 operator>> (int shift) const
+
+
+point2 & operator+= (const point2 &p)
+
+
+point2 & operator-= (const point2 &p)
+
+
+point2 & operator/= (double t)
+
+
+const T & operator[] (std::size_t i) const
+
+
+T & operator[] (std::size_t i)
+
+Public Attributes
+
+T x
+
+
+T y
+
+Static Public Attributes
+
+static const std::size_t num_dimensions = 2
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:23 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0061.html b/doc/html/g_i_l_0061.html
new file mode 100755
index 000000000..8d8890988
--- /dev/null
+++ b/doc/html/g_i_l_0061.html
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+variant Member List This is the complete list of members for variant , including all inherited members.
Generated on Thu Nov 8 21:53:24 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0062.html b/doc/html/g_i_l_0062.html
new file mode 100755
index 000000000..72b281364
--- /dev/null
+++ b/doc/html/g_i_l_0062.html
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+ Generic Image Library : variant Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+variant Class Template Reference
+
+[Variant ]
+ #include <variant.hpp >
+
+List of all members.
Detailed Description
+template<typename Types>
+ class boost::gil::variant< Types >
+
+Represents a concrete instance of a run-time specified type from a set of types
+A concept is typically modeled by a collection of different types. They may be instantiations of a templated type with different template parameters or even completely unrelated types.
+
+We call the type with which the concept is instantiated in a given place in the code "the concrete type". The concrete type must be chosen at compile time, which sometimes is a severe limitation. Consider, for example, having an image concept modeled by an image class templated over the color space. It would be difficult to write a function that reads an image from file preserving its native color space, since the type of the return value is only available at run time. It would be difficult to store images of different color spaces in the same container or apply operations on them uniformly.
+The variant class addresses this deficiency. It allows for run-time instantiation of a class from a given set of allowed classes specified at compile time. For example, the set of allowed classes may include 8-bit and 16-bit RGB and CMYK images. Such a variant can be constructed with rgb8_image_t and then assigned a cmyk16_image_t.
+The variant has a templated constructor, which allows us to construct it with any concrete type instantiation. It can also perform a generic operation on the concrete type via a call to apply_operation. The operation must be provided as a function object whose application operator has a single parameter which can be instantiated with any of the allowed types of the variant.
+variant breaks down the instantiated type into a non-templated underlying base type and a unique instantiation type identifier. In the most common implementation the concrete instantiation in stored 'in-place' - in 'bits_t'. bits_t contains sufficient space to fit the largest of the instantiated objects.
+GIL's variant is similar to boost::variant in spirit (hence we borrow the name from there) but it differs in several ways from the current boost implementation. Most notably, it does not take a variable number of template parameters but a single parameter defining the type enumeration. As such it can be used more effectively in generic code.
+The Types parameter specifies the set of allowable types. It models MPL Random Access Container
+
+
+
+Public Types
+
+typedef Types types_t
+
+Public Member Functions
+
+template<typename T>
+ variant (const T &obj)
+
+
+template<typename T>
+ variant (T &obj, bool do_swap)
+
+
+template<typename T>
+variant & operator= (const T &obj)
+
+
+variant & operator= (const variant &v)
+
+
+ variant (const variant &v)
+
+
+template<typename T>
+void move_in (T &obj)
+
+
+template<typename T>
+const T & _dynamic_cast () const
+
+
+template<typename T>
+T & _dynamic_cast ()
+
+
+template<typename T>
+bool current_type_is () const
+
+Static Public Member Functions
+
+template<typename T>
+static bool has_type ()
+
+Friends
+
+template<typename TS>
+bool operator== (const variant < TS > &x, const variant < TS > &y)
+
+
+template<typename TS>
+bool operator!= (const variant < TS > &x, const variant < TS > &y)
+
+
+template<typename Cs>
+void swap (variant < Cs > &x, variant < Cs > &y)
+
+
+template<typename Types2, typename UnaryOp>
+UnaryOp::result_type apply_operation (variant < Types2 > &var, UnaryOp op)
+
+
+template<typename Types2, typename UnaryOp>
+UnaryOp::result_type apply_operation (const variant < Types2 > &var, UnaryOp op)
+
+
+template<typename Types1, typename Types2, typename BinaryOp>
+BinaryOp::result_type apply_operation (const variant < Types1 > &arg1, const variant < Types2 > &arg2, BinaryOp op)
+
+ Invokes a generic constant operation (represented as a binary function object) on two variants.
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:24 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0063.html b/doc/html/g_i_l_0063.html
new file mode 100755
index 000000000..12a14085d
--- /dev/null
+++ b/doc/html/g_i_l_0063.html
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+ Generic Image Library : Member List
+
+
+
+
+
+
+
+
+
+
+
+virtual_2d_locator Member List This is the complete list of members for virtual_2d_locator , including all inherited members.
+ axis_iterator () (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ axis_iterator () const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ axis_iterator (const point_t &p) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ cache_location (const difference_type &d) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ cache_location (x_coord_t dx, y_coord_t dy) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ cached_location_t typedef (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > >
+ const_t typedef (defined in virtual_2d_locator )virtual_2d_locator
+ coord_t typedef (defined in virtual_2d_locator )virtual_2d_locator
+ deref_fn () const (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ deref_fn_t typedef (defined in virtual_2d_locator )virtual_2d_locator
+ difference_type typedef (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > >
+ is_1d_traversable (x_coord_t) const (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ num_dimensions (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [static]
+ operator * () const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ operator!= (const virtual_2d_locator< Deref, IsTransposed > &p) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ operator() (x_coord_t dx, y_coord_t dy) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ operator+ (const difference_type &d) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ operator+= (const difference_type &d) (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ operator- (const difference_type &d) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ operator-= (const difference_type &d) (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ operator== (const this_t &p) const (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ operator[] (const difference_type &d) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ parent_t typedef (defined in virtual_2d_locator )virtual_2d_locator
+ point_t typedef (defined in virtual_2d_locator )virtual_2d_locator
+ pos () const (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ reference typedef (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > >
+ step () const (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ value_type typedef (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > >
+ virtual_2d_locator (defined in virtual_2d_locator )virtual_2d_locator [friend]
+ virtual_2d_locator (const point_t &p=point_t(0, 0), const point_t &step=point_t(1, 1), const deref_fn_t &d=deref_fn_t()) (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ virtual_2d_locator (const virtual_2d_locator< D, TR > &loc, coord_t y_step) (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ virtual_2d_locator (const virtual_2d_locator< D, TR > &loc, coord_t x_step, coord_t y_step, bool transpose=false) (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ virtual_2d_locator (const virtual_2d_locator< D, TR > &pl) (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ virtual_2d_locator (const virtual_2d_locator &pl) (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ x () (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ x () const (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ x_at (x_coord_t dx, y_coord_t dy) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ x_at (const difference_type &d) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ x_coord_t typedef (defined in virtual_2d_locator )virtual_2d_locator
+ x_iterator typedef (defined in virtual_2d_locator )virtual_2d_locator
+ xy_at (x_coord_t dx, y_coord_t dy) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ xy_at (const difference_type &d) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ y () (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ y () const (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ y_at (x_coord_t dx, y_coord_t dy) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ y_at (const difference_type &d) const (defined in pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > )pixel_2d_locator_base< virtual_2d_locator< Deref, IsTransposed >, position_iterator< Deref, IsTransposed >, position_iterator< Deref, 1-IsTransposed > > [inline]
+ y_coord_t typedef (defined in virtual_2d_locator )virtual_2d_locator
+ y_distance_to (const this_t &it2, x_coord_t xDiff) const (defined in virtual_2d_locator )virtual_2d_locator [inline]
+ y_iterator typedef (defined in virtual_2d_locator )virtual_2d_locator
+
Generated on Thu Nov 8 21:53:24 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0064.html b/doc/html/g_i_l_0064.html
new file mode 100755
index 000000000..cfcccefa9
--- /dev/null
+++ b/doc/html/g_i_l_0064.html
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+ Generic Image Library : virtual_2d_locator Class Template Reference
+
+
+
+
+
+
+
+
+
+
+
+
+virtual_2d_locator Class Template Reference
+
+[Models , Models ]
+ #include <virtual_locator.hpp >
+
+
Inheritance diagram for virtual_2d_locator:
+
+
+
+
+List of all members. Detailed Description
+template<typename Deref, bool IsTransposed>
+ class boost::gil::virtual_2d_locator< Deref, IsTransposed >
+
+A 2D locator over a virtual image. Upon dereferencing, invokes a given function object passing it its coordinates. Models: PixelLocatorConcept , HasDynamicXStepTypeConcept , HasDynamicYStepTypeConcept , HasTransposedTypeConcept .
+
+
+
+Public Types
+
+typedef pixel_2d_locator_base <
+ virtual_2d_locator < Deref,
+ IsTransposed >, position_iterator <
+ Deref, IsTransposed >, position_iterator <
+ Deref, 1-IsTransposed > > parent_t
+
+
+typedef virtual_2d_locator <
+ typename Deref::const_t,
+ IsTransposed > const_t
+
+
+typedef Deref deref_fn_t
+
+
+typedef parent_t::point_t point_t
+
+
+typedef parent_t::coord_t coord_t
+
+
+typedef parent_t::x_coord_t x_coord_t
+
+
+typedef parent_t::y_coord_t y_coord_t
+
+
+typedef parent_t::x_iterator x_iterator
+
+
+typedef parent_t::y_iterator y_iterator
+
+Public Member Functions
+
+ virtual_2d_locator (const point_t &p=point_t(0, 0), const point_t &step=point_t(1, 1), const deref_fn_t &d=deref_fn_t())
+
+
+template<typename D, bool TR>
+ virtual_2d_locator (const virtual_2d_locator < D, TR > &loc, coord_t y_step)
+
+
+template<typename D, bool TR>
+ virtual_2d_locator (const virtual_2d_locator < D, TR > &loc, coord_t x_step, coord_t y_step, bool transpose=false)
+
+
+template<typename D, bool TR>
+ virtual_2d_locator (const virtual_2d_locator < D, TR > &pl)
+
+
+ virtual_2d_locator (const virtual_2d_locator &pl)
+
+
+bool operator== (const this_t &p) const
+
+
+x_iterator & x ()
+
+
+y_iterator & y ()
+
+
+x_iterator const & x () const
+
+
+y_iterator const & y () const
+
+
+y_coord_t y_distance_to (const this_t &it2, x_coord_t xDiff) const
+
+
+bool is_1d_traversable (x_coord_t) const
+
+
+const point_t & pos () const
+
+
+const point_t & step () const
+
+
+const deref_fn_t & deref_fn () const
+
+Friends
+
+class virtual_2d_locator
+
+
+ The documentation for this class was generated from the following file:
+Generated on Thu Nov 8 21:53:24 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0065.html b/doc/html/g_i_l_0065.html
new file mode 100755
index 000000000..c99fb4e10
--- /dev/null
+++ b/doc/html/g_i_l_0065.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+ Generic Image Library : cmyk.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+cmyk.hpp Go to the documentation of this file. 00001
+ 00002
+ 00003
+ 00004
+ 00005
+ 00006
+ 00007
+ 00008
+ 00009
+ 00010
+ 00011
+ 00012
+ 00013 #ifndef GIL_CMYK_H
+ 00014 #define GIL_CMYK_H
+ 00015
+ 00023
+ 00024 #include "gil_config.hpp "
+ 00025 #include "metafunctions.hpp "
+ 00026 #include <boost/mpl/range_c.hpp>
+ 00027 #include <boost/mpl/vector_c.hpp>
+ 00028
+ 00029 namespace boost { namespace gil {
+ 00030
+ 00031
+ 00034
+00036 struct cyan_t {};
+ 00037
+00039 struct magenta_t {};
+ 00040
+00042 struct yellow_t {};
+ 00043
+00045 struct black_t {};
+ 00047
+ 00049 typedef mpl::vector4<cyan_t,magenta_t,yellow_t,black_t> cmyk_t;
+ 00050
+ 00052 typedef layout<cmyk_t> cmyk_layout_t ;
+ 00053
+ 00056 template <typename IC>
+00057 inline typename type_from_x_iterator<planar_pixel_iterator<IC,cmyk_t> >::view_t planar_cmyk_view (int width, int height, IC c, IC m, IC y, IC k, std::ptrdiff_t rowsize_in_bytes) {
+ 00058 typedef typename type_from_x_iterator<planar_pixel_iterator<IC,cmyk_t> >::view_t RView;
+ 00059 return RView(width, height, typename RView::locator(planar_pixel_iterator<IC,cmyk_t> (c,m,y,k), rowsize_in_bytes));
+ 00060 }
+ 00061
+ 00062 } }
+ 00063
+ 00064 #endif
+Generated on Thu Nov 8 21:53:16 2007 for Generic Image Library by
+
+ 1.4.4
+
+
diff --git a/doc/html/g_i_l_0066.html b/doc/html/g_i_l_0066.html
new file mode 100755
index 000000000..69a001f9d
--- /dev/null
+++ b/doc/html/g_i_l_0066.html
@@ -0,0 +1,422 @@
+
+
+
+
+
+
+ Generic Image Library : color_base.hpp Source File
+
+
+
+
+
+
+
+
+
+
+
+
+color_base.hpp Go to the documentation of this file. 00001
+ 00002
+ 00003
+ 00004
+ 00005
+ 00006
+ 00007
+ 00008
+ 00009
+ 00010
+ 00011
+ 00012
+ 00013 #ifndef GIL_COLOR_BASE_HPP
+ 00014 #define GIL_COLOR_BASE_HPP
+ 00015
+ 00024
+ 00025 #include <cassert>
+ 00026 #include <boost/mpl/range_c.hpp>
+ 00027 #include <boost/mpl/size.hpp>
+ 00028 #include <boost/mpl/vector_c.hpp>
+ 00029 #include <boost/type_traits.hpp>
+ 00030 #include <boost/utility/enable_if.hpp>
+ 00031
+ 00032 #include "