iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SeekableImageSourceType.H
Go to the documentation of this file.
1 /*! @file
2  @author Randolph Voorhies (voorhies@usc.edu)
3  @copyright GNU Public License (GPL v3)
4  @section License
5  @verbatim
6  // ////////////////////////////////////////////////////////////////////////
7  // The iLab Neuromorphic Robotics Toolkit (NRT) //
8  // Copyright 2010-2012 by the University of Southern California (USC) //
9  // and the iLab at USC. //
10  // //
11  // iLab - University of Southern California //
12  // Hedco Neurociences Building, Room HNB-10 //
13  // Los Angeles, Ca 90089-2520 - USA //
14  // //
15  // See http://ilab.usc.edu for information about this project. //
16  // ////////////////////////////////////////////////////////////////////////
17  // This file is part of The iLab Neuromorphic Robotics Toolkit. //
18  // //
19  // The iLab Neuromorphic Robotics Toolkit is free software: you can //
20  // redistribute it and/or modify it under the terms of the GNU General //
21  // Public License as published by the Free Software Foundation, either //
22  // version 3 of the License, or (at your option) any later version. //
23  // //
24  // The iLab Neuromorphic Robotics Toolkit is distributed in the hope //
25  // that it will be useful, but WITHOUT ANY WARRANTY; without even the //
26  // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //
27  // PURPOSE. See the GNU General Public License for more details. //
28  // //
29  // You should have received a copy of the GNU General Public License //
30  // along with The iLab Neuromorphic Robotics Toolkit. If not, see //
31  // <http://www.gnu.org/licenses/>. //
32  // ////////////////////////////////////////////////////////////////////////
33  @endverbatim */
34 
35 
36 #ifndef INCLUDE_NRT_IMAGEPROC_IO_IMAGESOURCE_DETAILS_SEEKABLEIMAGESOURCETYPE_H
37 #define INCLUDE_NRT_IMAGEPROC_IO_IMAGESOURCE_DETAILS_SEEKABLEIMAGESOURCETYPE_H
38 
42 
43 namespace nrt
44 {
45  namespace seekableimagesource
46  {
47  // Note: derived classes must implement the callback, see, eg, ImageFilesSource
48  NRT_DECLARE_PARAMETER_WITH_CALLBACK(frames, FrameRange, "The frame range to read", FrameRange(0, FrameRange::Max),
50  }
51 
52  //! A pure virtual base class for seekable ImageSourceTypes
53  /*! The SeekableImageSourceType base class is used to provide a common interface
54  for all ImageSourceType which provide random access to frames. */
55  class SeekableImageSourceType : public ImageSourceType, public Parameter<seekableimagesource::frames>
56  {
57  public:
58  SeekableImageSourceType(std::string const& instanceID="SeekableImageSourceType");
59 
60  //! Reset the current frame upon start
61  virtual void preStart();
62 
63  //! Request the Image source to seek to the given framenumber.
64  /*! Classes which implement this method should take no action and return
65  false if the requested framenumber is out of bounds of the given
66  FrameRange and the limits of the file(s)*/
67  virtual bool const seek(size_t const framenumber) = 0;
68 
69  //! Get the range of frame numbers that are valid to use in a call to seek()
70  virtual FrameRange const frameRange() const = 0;
71 
72  //! Get the frame number that will be returned by the next call to in()
73  virtual size_t const nextFrameNumber() const = 0;
74  };
75 }
76 
77 #endif // INCLUDE_NRT_IMAGEPROC_IO_IMAGESOURCE_DETAILS_SEEKABLEIMAGESOURCETYPE_H