Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarImageMetadataDatabase.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/game/StarImageMetadataDatabase.hpp')
-rw-r--r--source/game/StarImageMetadataDatabase.hpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/source/game/StarImageMetadataDatabase.hpp b/source/game/StarImageMetadataDatabase.hpp
index 69e7a07..0a04b1f 100644
--- a/source/game/StarImageMetadataDatabase.hpp
+++ b/source/game/StarImageMetadataDatabase.hpp
@@ -5,6 +5,7 @@
#include "StarString.hpp"
#include "StarThread.hpp"
#include "StarAssetPath.hpp"
+#include "StarTtlCache.hpp"
namespace Star {
@@ -15,9 +16,11 @@ STAR_CLASS(ImageMetadataDatabase);
// because they are expensive to compute and cheap to keep around.
class ImageMetadataDatabase {
public:
+ ImageMetadataDatabase();
Vec2U imageSize(AssetPath const& path) const;
List<Vec2I> imageSpaces(AssetPath const& path, Vec2F position, float fillLimit, bool flip) const;
RectU nonEmptyRegion(AssetPath const& path) const;
+ void cleanup() const;
private:
// Removes image processing directives that don't affect image spaces /
@@ -30,9 +33,9 @@ private:
typedef tuple<AssetPath, Vec2I, float, bool> SpacesEntry;
mutable Mutex m_mutex;
- mutable HashMap<AssetPath, Vec2U> m_sizeCache;
- mutable HashMap<SpacesEntry, List<Vec2I>> m_spacesCache;
- mutable HashMap<AssetPath, RectU> m_regionCache;
+ mutable HashTtlCache<AssetPath, Vec2U> m_sizeCache;
+ mutable HashTtlCache<SpacesEntry, List<Vec2I>> m_spacesCache;
+ mutable HashTtlCache<AssetPath, RectU> m_regionCache;
};
}