/* * Copyright (C) 2004 Andrew Mihal * * This software is an extension of the VIGRA computer vision library. * ( Version 1.2.0, Aug 07 2003 ) * You may use, modify, and distribute this software according * to the terms stated in the LICENSE file included in * the VIGRA distribution. * * VIGRA is Copyright 1998-2002 by Ullrich Koethe * Cognitive Systems Group, University of Hamburg, Germany * * The VIGRA Website is * http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/ * Please direct questions, bug reports, and contributions to * koethe@informatik.uni-hamburg.de * * THIS SOFTWARE IS PROVIDED AS IS AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef VIGRA_EXT_STDCACHEDFILEIMAGE_HXX #define VIGRA_EXT_STDCACHEDFILEIMAGE_HXX #include #include #include #include #include #include namespace vigra { #define CFI_DEFINE_ITERATORTRAITS(VALUETYPE, ACCESSOR, CONSTACCESSOR) \ template<> \ struct IteratorTraits< \ CachedFileImageIterator > \ { \ typedef CachedFileImageIterator Iterator; \ typedef Iterator iterator; \ typedef iterator::iterator_category iterator_category; \ typedef iterator::value_type value_type; \ typedef iterator::reference reference; \ typedef iterator::index_reference index_reference; \ typedef iterator::pointer pointer; \ typedef iterator::difference_type difference_type; \ typedef iterator::row_iterator row_iterator; \ typedef iterator::column_iterator column_iterator; \ typedef ACCESSOR default_accessor; \ typedef ACCESSOR DefaultAccessor; \ }; \ template<> \ struct IteratorTraits< \ ConstCachedFileImageIterator > \ { \ typedef \ ConstCachedFileImageIterator Iterator; \ typedef Iterator iterator; \ typedef iterator::iterator_category iterator_category; \ typedef iterator::value_type value_type; \ typedef iterator::reference reference; \ typedef iterator::index_reference index_reference; \ typedef iterator::pointer pointer; \ typedef iterator::difference_type difference_type; \ typedef iterator::row_iterator row_iterator; \ typedef iterator::column_iterator column_iterator; \ typedef CONSTACCESSOR default_accessor; \ typedef CONSTACCESSOR DefaultAccessor; \ }; \ template<> \ struct IteratorTraits< \ StridedCachedFileImageIterator > \ { \ typedef StridedCachedFileImageIterator Iterator; \ typedef Iterator iterator; \ typedef iterator::iterator_category iterator_category; \ typedef iterator::value_type value_type; \ typedef iterator::reference reference; \ typedef iterator::index_reference index_reference; \ typedef iterator::pointer pointer; \ typedef iterator::difference_type difference_type; \ typedef iterator::row_iterator row_iterator; \ typedef iterator::column_iterator column_iterator; \ typedef ACCESSOR default_accessor; \ typedef ACCESSOR DefaultAccessor; \ }; \ template<> \ struct IteratorTraits< \ ConstStridedCachedFileImageIterator > \ { \ typedef ConstStridedCachedFileImageIterator Iterator; \ typedef Iterator iterator; \ typedef iterator::iterator_category iterator_category; \ typedef iterator::value_type value_type; \ typedef iterator::reference reference; \ typedef iterator::index_reference index_reference; \ typedef iterator::pointer pointer; \ typedef iterator::difference_type difference_type; \ typedef iterator::row_iterator row_iterator; \ typedef iterator::column_iterator column_iterator; \ typedef CONSTACCESSOR default_accessor; \ typedef CONSTACCESSOR DefaultAccessor; \ }; CFI_DEFINE_ITERATORTRAITS(UInt8, StandardValueAccessor, StandardConstValueAccessor) typedef CachedFileImage UInt8CFImage; CFI_DEFINE_ITERATORTRAITS(Int8, StandardValueAccessor, StandardConstValueAccessor) typedef CachedFileImage Int8CFImage; CFI_DEFINE_ITERATORTRAITS(UInt16, StandardValueAccessor, StandardConstValueAccessor) typedef CachedFileImage UInt16CFImage; CFI_DEFINE_ITERATORTRAITS(Int16, StandardValueAccessor, StandardConstValueAccessor) typedef CachedFileImage Int16CFImage; CFI_DEFINE_ITERATORTRAITS(UInt32, StandardValueAccessor, StandardConstValueAccessor) typedef CachedFileImage UInt32CFImage; CFI_DEFINE_ITERATORTRAITS(Int32, StandardValueAccessor, StandardConstValueAccessor) typedef CachedFileImage Int32CFImage; CFI_DEFINE_ITERATORTRAITS(float, StandardValueAccessor, StandardConstValueAccessor) typedef CachedFileImage FCFImage; CFI_DEFINE_ITERATORTRAITS(double, StandardValueAccessor, StandardConstValueAccessor) typedef CachedFileImage DCFImage; CFI_DEFINE_ITERATORTRAITS(RGBValue, RGBAccessor, RGBAccessor) typedef CachedFileImage > UInt8RGBCFImage; CFI_DEFINE_ITERATORTRAITS(RGBValue, RGBAccessor, RGBAccessor) typedef CachedFileImage > Int8RGBCFImage; CFI_DEFINE_ITERATORTRAITS(RGBValue, RGBAccessor, RGBAccessor) typedef CachedFileImage > UInt16RGBCFImage; CFI_DEFINE_ITERATORTRAITS(RGBValue, RGBAccessor, RGBAccessor) typedef CachedFileImage > Int16RGBCFImage; CFI_DEFINE_ITERATORTRAITS(RGBValue, RGBAccessor, RGBAccessor) typedef CachedFileImage > UInt32RGBCFImage; CFI_DEFINE_ITERATORTRAITS(RGBValue, RGBAccessor, RGBAccessor) typedef CachedFileImage > Int32RGBCFImage; CFI_DEFINE_ITERATORTRAITS(RGBValue, RGBAccessor, RGBAccessor) typedef CachedFileImage > FRGBCFImage; CFI_DEFINE_ITERATORTRAITS(RGBValue, RGBAccessor, RGBAccessor) typedef CachedFileImage > DRGBCFImage; #ifndef NO_PARTIAL_TEMPLATE_SPECIALIZATION // define traits for BasicImageIterator instanciations that // were not explicitly defined above template struct IteratorTraits > { typedef CachedFileImageIterator Iterator; typedef Iterator iterator; typedef typename iterator::iterator_category iterator_category; typedef typename iterator::value_type value_type; typedef typename iterator::reference reference; typedef typename iterator::index_reference index_reference; typedef typename iterator::pointer pointer; typedef typename iterator::difference_type difference_type; typedef typename iterator::row_iterator row_iterator; typedef typename iterator::column_iterator column_iterator; typedef StandardAccessor DefaultAccessor; typedef StandardAccessor default_accessor; }; template struct IteratorTraits > { typedef ConstCachedFileImageIterator Iterator; typedef Iterator iterator; typedef typename iterator::iterator_category iterator_category; typedef typename iterator::value_type value_type; typedef typename iterator::reference reference; typedef typename iterator::index_reference index_reference; typedef typename iterator::pointer pointer; typedef typename iterator::difference_type difference_type; typedef typename iterator::row_iterator row_iterator; typedef typename iterator::column_iterator column_iterator; typedef StandardConstAccessor DefaultAccessor; typedef StandardConstAccessor default_accessor; }; #endif } // namespace vigra #endif /* VIGRA_EXT_STDCACHEDFILEIMAGE_HXX */