00001 #ifndef IONFLUX_TOOLS_CAIRO_PATHITERATOR 00002 #define IONFLUX_TOOLS_CAIRO_PATHITERATOR 00003 /* ========================================================================== 00004 * Ionflux Tools 00005 * Copyright (c) 2005 Joern P. Meier 00006 * mail@ionflux.org 00007 * -------------------------------------------------------------------------- 00008 * PathIterator.hpp Cairo path iterator. 00009 * ========================================================================== 00010 * 00011 * This file is part of Ionflux Tools. 00012 * 00013 * Ionflux Tools is free software; you can redistribute it and/or modify it 00014 * under the terms of the GNU General Public License as published by the 00015 * Free Software Foundation; either version 2 of the License, or (at your 00016 * option) any later version. 00017 * 00018 * Ionflux Tools is distributed in the hope that it will be useful, but 00019 * WITHOUT ANY WARRANTY; without even the implied warranty of 00020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00021 * General Public License for more details. 00022 * 00023 * You should have received a copy of the GNU General Public License along 00024 * with Ionflux Tools; if not, write to the Free Software Foundation, Inc., 00025 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00026 * 00027 * ========================================================================== */ 00028 00029 #include "ionflux/CairoPathData.hpp" 00030 00031 namespace Ionflux 00032 { 00033 00034 namespace Tools 00035 { 00036 00037 namespace Cairo 00038 { 00039 00040 class Path; 00041 00050 class PathIterator 00051 { 00052 private: 00053 00054 protected: 00056 Path* path; 00058 unsigned int elementIndex; 00059 00060 public: 00061 00066 PathIterator(); 00067 00074 PathIterator(const PathIterator& initPathIterator); 00075 00083 PathIterator(Path& initPath, unsigned int initIndex = 0); 00084 00089 virtual ~PathIterator(); 00090 00097 virtual PathData& operator*(); 00098 00105 virtual PathData& operator++(); 00106 00115 virtual PathData& operator++(int dummy); 00116 00123 virtual PathData& operator--(); 00124 00133 virtual PathData& operator--(int dummy); 00134 00143 virtual bool operator==(const PathIterator& other); 00144 00154 virtual bool operator!=(const PathIterator& other); 00155 00164 virtual PathIterator& operator=(const PathIterator& newPathIterator); 00165 00172 virtual void setPath(Path* newPath); 00173 00180 virtual void setElementIndex(unsigned int newElementIndex); 00181 00186 virtual Path* getPath() const; 00187 00192 virtual unsigned int getElementIndex() const; 00193 }; 00194 00195 } 00196 00197 } 00198 00199 } 00200 00204 #endif