Atlas Game Manager
A game manager for f95 and dlsite written in c++
Loading...
Searching...
No Matches
ImageCache.hpp
Go to the documentation of this file.
1//
2// Created by kj16609 on 9/21/23.
3//
4
5#pragma once
6#ifndef ATLASGAMEMANAGER_IMAGECACHE_HPP
7#define ATLASGAMEMANAGER_IMAGECACHE_HPP
8
9#include <QPixmap>
10
11#include <chrono>
12#include <map>
13#include <mutex>
14
15namespace atlas::cache
16{
17 using Clock = std::chrono::steady_clock;
18
20 {
22 {
23 std::chrono::time_point< std::chrono::steady_clock > last_accessed { Clock::now() };
24 QPixmap pixmap;
25
26 PixmapItem( QPixmap map ) : pixmap( map ) {}
27
28 void operator()() { last_accessed = Clock::now(); }
29
30 std::uint64_t size() const;
31
32 std::uint64_t score( const std::chrono::time_point< std::chrono::steady_clock >& current_time ) const;
33
34 bool operator<( const PixmapItem& other ) const { return size() < other.size(); }
35 };
36
37 std::recursive_mutex mtx {};
38 std::multimap< std::string, PixmapItem > cache {};
39 std::uint64_t max_size { 1024 * 1024 * 128 }; // 128 MB
40 std::uint64_t current_size { 0 };
41
42 public:
43
45 void prune();
46
48 void insert( const std::string& key, const QPixmap& pixmap );
49
50 std::optional< QPixmap > find( std::string key );
51 };
52
53} // namespace atlas::cache
54
55#endif //ATLASGAMEMANAGER_IMAGECACHE_HPP
Definition ImageCache.hpp:20
std::recursive_mutex mtx
Definition ImageCache.hpp:37
void prune()
Prunes the cache. Removing the lowest scores first. Determined via ImageCache::score()
Definition ImageCache.cpp:51
std::optional< QPixmap > find(std::string key)
Definition ImageCache.cpp:118
std::uint64_t current_size
Definition ImageCache.hpp:40
std::uint64_t max_size
Definition ImageCache.hpp:39
void insert(const std::string &key, const QPixmap &pixmap)
Inserts a pixmap into the cache.
Definition ImageCache.cpp:97
std::multimap< std::string, PixmapItem > cache
Definition ImageCache.hpp:38
Definition ImageCache.cpp:11
std::chrono::steady_clock Clock
Definition ImageCache.hpp:17
void operator()()
Definition ImageCache.hpp:28
std::chrono::time_point< std::chrono::steady_clock > last_accessed
Definition ImageCache.hpp:23
QPixmap pixmap
Definition ImageCache.hpp:24
std::uint64_t size() const
Definition ImageCache.cpp:13
PixmapItem(QPixmap map)
Definition ImageCache.hpp:26
std::uint64_t score(const std::chrono::time_point< std::chrono::steady_clock > &current_time) const
Definition ImageCache.cpp:25
bool operator<(const PixmapItem &other) const
Definition ImageCache.hpp:34