00001 //------------------------------------------------------------------------------ 00002 // This file is part of the OpenStructure project <www.openstructure.org> 00003 // 00004 // Copyright (C) 2008-2011 by the OpenStructure authors 00005 // Copyright (C) 2003-2010 by the IPLT authors 00006 // 00007 // This library is free software; you can redistribute it and/or modify it under 00008 // the terms of the GNU Lesser General Public License as published by the Free 00009 // Software Foundation; either version 3.0 of the License, or (at your option) 00010 // any later version. 00011 // This library is distributed in the hope that it will be useful, but WITHOUT 00012 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 00013 // FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 00014 // details. 00015 // 00016 // You should have received a copy of the GNU Lesser General Public License 00017 // along with this library; if not, write to the Free Software Foundation, Inc., 00018 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00019 //------------------------------------------------------------------------------ 00020 00021 /* 00022 Author:Andreas Schenk 00023 */ 00024 00025 #ifndef IMG_IMAGE_LIST_HH 00026 #define IMG_IMAGE_LIST_HH 00027 00028 00029 #include <ost/img/image.hh> 00030 00031 namespace ost { namespace img { 00032 00033 00034 00036 00043 class DLLEXPORT_OST_IMG_BASE ImageList: public std::vector<ImageHandle> { 00044 public: 00045 ImageList(); 00046 ImageList(const ImageList& il); 00047 ImageList(ImageList::iterator start,ImageList::iterator end); 00048 ImageHandle GetGallery(unsigned int columns=0,bool border=false); 00049 ImageHandle GetImageStack(); 00050 00051 00055 00057 00060 void Apply(NonModAlgorithm& a) const; 00061 00063 00066 void ApplyIP(NonModAlgorithm& a) const; 00067 00069 00072 void ApplyIP(ModIPAlgorithm& a); 00073 00075 00082 ImageList Apply(ModIPAlgorithm& a) const; 00083 00085 void ApplyIP(const ConstModIPAlgorithm& a); 00086 00087 ImageList Apply(const ConstModIPAlgorithm& a) const; 00088 00089 void ApplyIP(ModOPAlgorithm& a); 00090 00091 ImageList Apply(ModOPAlgorithm& a) const; 00092 00093 void ApplyIP(const ConstModOPAlgorithm& a); 00094 00095 ImageList Apply(const ConstModOPAlgorithm& a) const; 00097 00102 00103 void StateApply(ImageStateNonModVisitorBase& v) const; 00104 00106 void StateApplyIP(ImageStateModIPVisitorBase& v); 00108 ImageList StateApply(ImageStateModIPVisitorBase& v) const; 00110 void StateApplyIP(const ImageStateConstModIPVisitorBase& v); 00112 ImageList StateApply(const ImageStateConstModIPVisitorBase& v) const; 00114 void StateApplyIP(ImageStateModOPVisitorBase& v); 00116 ImageList StateApply(ImageStateModOPVisitorBase& v) const; 00118 void StateApplyIP(const ImageStateConstModOPVisitorBase& v); 00120 ImageList StateApply(const ImageStateConstModOPVisitorBase& v) const; 00122 void StateApplyIP(ImageStateMorphVisitorBase& v); 00124 00125 ImageList StateApply(ImageStateMorphVisitorBase& v) const; 00126 ImageList& operator+=(Real v); 00127 ImageList& operator+=(const Complex& v); 00128 ImageList& operator-=(Real v); 00129 ImageList& operator-=(const Complex& v); 00130 ImageList& operator*=(Real v); 00131 ImageList& operator*=(const Complex& v); 00132 ImageList& operator/=(Real v); 00133 ImageList& operator/=(const Complex& v); 00134 ImageList& operator+=(const ConstImageHandle& h); 00135 ImageList& operator-=(const ConstImageHandle& h); 00136 ImageList& operator*=(const ConstImageHandle& h); 00137 ImageList& operator/=(const ConstImageHandle& h); 00138 private: 00139 Size get_max_size_(); 00140 DataType get_data_type_(); 00141 00142 }; 00143 00144 }} 00145 00146 #endif