FotoSHOCK
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
MipMap.hpp
1 /*
2  * Copyright 2011, 2012 Lukas Jirkovsky
3  *
4  * This file is part of FotoSHOCKcore.
5  *
6  * FotoSHOCKcore is free software: you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published by
8  * the Free Software Foundation, version 3 of the License.
9  *
10  * FotoSHOCKcore is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with FotoSHOCKcore. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 #ifndef MIPMAP_H
20 #define MIPMAP_H
21 
22 #include "ImageBufferBase.hpp"
23 
24 namespace FotoSHOCKcore {
25 
27 
32 class MipMap {
33  public:
35  static const int MIPMAP_LEVELS = 3;
36 
38 
41  MipMap();
43 
53  MipMap(unsigned int width, unsigned int height, PixelData format, unsigned int tileExtent, bool allocateTiles = true);
55 
61  MipMap(const MipMap &other);
63 
76  MipMap(ImageBufferBase* buffer);
77 
79 
83  ~MipMap();
84 
86  MipMap& operator=(const MipMap& other);
88 
94  ImageBufferBase* operator[](int level);
98  const ImageBufferBase* operator[](int level) const;
99 
101 
104  const PixelData getPixelData() const;
106 
110  const long newStamp();
111  private:
112  ImageBufferBase* m_mipmap[MIPMAP_LEVELS];
113  long m_stamp;
114 };
115 
116 }
117 
118 #endif