| VRS - The Virtual Rendering System |
| version 3.3 |
00001 /********************************************************************** 00002 VRS - The Virtual Rendering System 00003 Copyright (C) 2001 Computer Graphics Systems Group at the 00004 Hasso-Plattner-Institute, Potsdam, Germany. 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Lesser General Public 00007 License as published by the Free Software Foundation; either 00008 version 2.1 of the License, or (at your option) any later version. 00009 This library is distributed in the hope that it will be useful, but 00010 WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00012 See the GNU Lesser General Public License for more details. 00013 You should have received a copy of the GNU Lesser+ General Public 00014 License along with this library; if not, write to the FreeSoftware 00015 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA, 02111-1307, USA. 00016 **********************************************************************/ 00017 // $Id: subiterator2d.h 4455 2004-11-03 10:58:29Z saar $ 00018 // $Date: 2004-11-03 11:58:29 +0100 (Wed, 03 Nov 2004) $ 00019 // $Revision: 4455 $ 00020 // $State$ 00021 // $Author: saar $ 00022 // 00023 // $Log$ 00024 // Revision 1.7 2004/11/03 10:58:29 saar 00025 // Class comment changed (Doxygen style) 00026 // 00027 // Revision 1.6 2004/03/12 16:28:39 baumann 00028 // macros VRS_NAMESPACE_BEGIN/_END expanded and removed 00029 // 00030 // Revision 1.5 2004/01/19 11:43:58 baumann 00031 // serialization mechanism improved 00032 // 00033 // Revision 1.4 2002/08/13 08:35:04 baumann 00034 // some changes for the interface VRS::Iterator2D<T> 00035 // 00036 // Revision 1.3 2002/08/06 16:24:02 baumann 00037 // VRS_API removed for template classes 00038 // 00039 // Revision 1.2 2002/07/05 05:55:27 baumann 00040 // changed return type of get()-method from "const T&" to "T" 00041 // 00042 // Revision 1.1 2002/07/04 12:44:31 baumann 00043 // new class VRS::SubIterator2D<T> added 00044 // 00045 00046 #ifndef VRS_CONTAINER_SUBITERATOR2D_H 00047 #define VRS_CONTAINER_SUBITERATOR2D_H 00048 00049 #include <vrs/container/iterator2d.h> 00050 00051 namespace VRS { 00052 00054 template<typename T> 00055 class SubIterator2D : public Iterator<T> { 00056 public: 00057 SubIterator2D(const Iterator2D<T>* sourceItr, 00058 unsigned int offsetX, unsigned int offsetY); 00059 SubIterator2D(Iterator<T>* sourceItr, 00060 unsigned int offsetX, unsigned int offsetY, 00061 unsigned int lengthX, unsigned int lengthY); 00062 00063 virtual unsigned int sizeX() const { return lengthX_; } 00064 virtual unsigned int sizeY() const { return lengthY_; } 00065 00066 virtual T get(unsigned int x, unsigned int y) const; 00067 00068 VRS_TYPEINFO(SubIterator2D, Iterator2D<T>); 00069 VRS_SERIALIZABLE(SubIterator2D); 00070 00071 protected: 00072 SubIterator2D() { } // only for serialization 00073 00074 private: 00075 SO<const Iterator2D<T> > itr_; 00076 unsigned int offsetX_; 00077 unsigned int offsetY_; 00078 unsigned int lengthX_; 00079 unsigned int lengthY_; 00080 }; 00081 00082 VRS_SERIALIZATION_REGISTRATION_TEMPLATE(SubIterator2D); 00083 00084 } // namespace VRS 00085 00086 #endif // VRS_CONTAINER_SUBITERATOR2D_H