Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

vidl2_pixel_iterator.h

Go to the documentation of this file.
00001 // This is brl/bbas/vidl2/vidl2_pixel_iterator.h
00002 #ifndef vidl2_pixel_iterator_h_
00003 #define vidl2_pixel_iterator_h_
00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00005 #pragma interface
00006 #endif
00007 //:
00008 // \file
00009 // \brief Iterators over pixels in a frame
00010 //
00011 // \author Matt Leotta 
00012 // \date 16 Jan 2006
00013 //
00014 // This file contains the classes and functions to use pixel iterators
00015 // in a polymorphic way.  Note that pixel iterators are not fast.
00016 // They are intended to allow for the automatic generation of conversion
00017 // routines between any pair of pixel formats.  Fast conversion functions
00018 // for specific formats can be written to override the default ones when needed.
00019 
00020 
00021 #include "vidl2_pixel_format.h"
00022 #include "vidl2_frame.h"
00023 
00024 
00025 //-----------------------------------------------------------------------------
00026 
00027 //: Abstract pixel iterator base class
00028 // A concrete pixel iterator for each pixel format is
00029 // derived from this class (see vidl2_pixel_format.txx) 
00030 class vidl2_pixel_iterator
00031 {
00032   public:
00033     //: Destructor
00034     virtual ~vidl2_pixel_iterator(){}
00035     //: Return the pixel format
00036     virtual vidl2_pixel_format pixel_format() const = 0;
00037     //: Pre-increment: step to the next pixel
00038     virtual vidl2_pixel_iterator& operator++ () = 0;
00039     //: Copy the pixel data into a byte array
00040     virtual void get_data(vxl_byte* data) const = 0;
00041     //: Set the pixel data from a byte array
00042     virtual void set_data(const vxl_byte* data) = 0;
00043 };
00044 
00045 
00046 //: Pixel iterator factory
00047 // Creates a new pixel iterator on the heap
00048 // The iterator is initialized to the first pixel in the frame
00049 // \note The user is responsible for deleting the iterator
00050 vidl2_pixel_iterator*
00051 vidl2_make_pixel_iterator(const vidl2_frame& frame);
00052 
00053 
00054 //: Return true if the pixel format has a valid pixel iterator implementation
00055 bool vidl2_has_pixel_iterator(vidl2_pixel_format FMT);
00056 
00057 
00058 
00059 
00060 #endif // vidl2_pixel_iterator_h_
00061 

Generated on Thu Jan 10 14:51:31 2008 for contrib/brl/bbas/vidl2 by  doxygen 1.4.4