ManaPlus
textureatlas.h
Go to the documentation of this file.
1 /*
2  * The ManaPlus Client
3  * Copyright (C) 2012-2019 The ManaPlus Developers
4  * Copyright (C) 2019-2021 Andrei Karas
5  *
6  * This file is part of The ManaPlus Client.
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program. If not, see <http://www.gnu.org/licenses/>.
20  */
21 
22 #ifndef RESOURCES_ATLAS_TEXTUREATLAS_H
23 #define RESOURCES_ATLAS_TEXTUREATLAS_H
24 
25 #ifdef USE_OPENGL
26 
27 #include "utils/foreach.h"
28 #include "utils/stringvector.h"
29 
31 
32 #include "localconsts.h"
33 
34 class AtlasResource;
35 class Image;
36 class Resource;
37 
38 struct AtlasItem;
39 
41 {
43  MemoryCounter(),
44  name(),
46  width(0),
47  height(0),
48  items()
49  {
50  }
51 
53 
55  {
56  return static_cast<int>(sizeof(TextureAtlas) +
57  items.capacity() * sizeof(AtlasItem*));
58  }
59 
60  int calcMemoryChilds(const int level) const override final
61  {
62  int sz = 0;
63  FOR_EACH (STD_VECTOR<AtlasItem*>::const_iterator, it, items)
64  {
65  AtlasItem *const item = *it;
66  sz += item->calcMemory(level + 1);
67  }
68  return sz;
69  }
70 
71  std::string getCounterName() const override
72  { return name; }
73 
74  std::string name;
76  int width;
77  int height;
78  STD_VECTOR <AtlasItem*> items;
79 };
80 
81 #endif // USE_OPENGL
82 #endif // RESOURCES_ATLAS_TEXTUREATLAS_H
int calcMemory(const int level) const
#define FOR_EACH(type, iter, array)
Definition: foreach.h:25
#define override
Definition: localconsts.h:47
#define final
Definition: localconsts.h:46
#define A_DELETE_COPY(func)
Definition: localconsts.h:53
#define nullptr
Definition: localconsts.h:45
std::string name
Definition: textureatlas.h:74
int calcMemoryChilds(const int level) const
Definition: textureatlas.h:60
Image * atlasImage
Definition: textureatlas.h:75
std::string getCounterName() const
Definition: textureatlas.h:71
int calcMemoryLocal() const
Definition: textureatlas.h:54
std::vector< AtlasItem * > items
Definition: textureatlas.h:78