Guiliani  Version 2.6 revision 7293 (documentation build 12)
GUIImageCache.h
1/*
2* Copyright (C) TES Electronic Solutions GmbH,
3* All Rights Reserved.
4* Contact: info@guiliani.de
5*
6* This file is part of the Guiliani HMI framework
7* for the development of graphical user interfaces on embedded systems.
8*/
9
10#ifndef GUIIMAGECACHE_H
11#define GUIIMAGECACHE_H
12
13#include "eC_String.h"
14#include "GUIImageResource.h"
15#include "GUIImageCacheReplacementPolicy.h"
16
18
22#define GETIMGCACHE (CGUIImageCache::GetInstance())
23
24// Uncomment for lots of debug messages
25//#define GUI_IMAGECACHE_DEBUG
106{
110 friend class CGUIResourceManager;
113 friend class CGfxWrap;
114
115public:
121 static void CreateInstance(eC_UInt uiSize = 100 * 1024 * 1024,
123
128 {
129 return ms_pInstance;
130 }
131
133 static void DeleteInstance();
134
135#ifdef GUILIANI_STREAM_GUI
141 virtual eC_Bool ReadCacheSettingsFromFile(const eC_String& kPath) =0;
142
152 void SetReadResolutionAppendix(const eC_String& kAppendString)
153 {
154 m_kAppendString = kAppendString;
155 }
156
157#endif //GUILIANI_STREAM_GUI
158
169 eC_Bool SetCacheSizeLimit(eC_UInt uiCacheSizeLimit);
170
174 virtual eC_UInt GetCurrentMemoryUsage() const=0;
175
179 inline eC_UInt GetCacheSizeLimit() const { return m_uiCacheSizeLimit; }
180
185 virtual eC_UInt GetImageSize(const ImageResource_t& eImageID) const=0;
186
195
204
205protected:
209 static void NotifyImageAccess(const ImageResource_t& eImageID)
210 {
211 if (ms_pInstance != NULL)
212 {
214 }
215 }
216
223 virtual eC_Bool FreeSpace(eC_UInt uiSpaceToFree) =0;
224
233 virtual eC_Bool LoadImg(const eC_String& kPath, const ImageResource_t& eImageID)=0;
234
243 virtual eC_Bool PreloadImg(const eC_String& psPath, const ImageResource_t& eImageID)=0;
244
249 virtual void MarkAsUsed(const ImageResource_t& eImageID) =0;
250
255 virtual void MarkAsFree(const ImageResource_t& eImageID) =0;
256
262 virtual eC_Bool UnloadSpecificImage(const ImageResource_t& eImageID) =0;
263
272
276 virtual void NotifyImageAccessInternal(const ImageResource_t& eImageID)=0;
277
280
283
286
289
292
295
298
301};
302#endif //GUIIMAGECACHE_H
Helper Macros in Guiliani
ImageResource_t
Enumeration of image resource ids.
Definition: GUIImageResource.h:126
Image cache base class.
Definition: GUIImageCache.h:106
virtual void SetUsedReplacementPolicy(CGUIImageCacheReplacementPolicy *pPolicy)
void SetReadResolutionAppendix(const eC_String &kAppendString)
Definition: GUIImageCache.h:152
eC_UInt m_uiCacheSizeLimit
Maximum amount of memory used by images.
Definition: GUIImageCache.h:285
virtual eC_UInt GetCurrentMemoryUsage() const =0
eC_UInt GetCacheSizeLimit() const
Definition: GUIImageCache.h:179
virtual eC_Bool ReadCacheSettingsFromFile(const eC_String &kPath)=0
eC_String m_kAppendString
Extension to the resolution for config reading.
Definition: GUIImageCache.h:288
virtual void CopyCacheContents(CGUIImageCacheReplacementPolicy *pOldPolicy, CGUIImageCacheReplacementPolicy *pNewPolicy)=0
eC_Bool SetCacheSizeLimit(eC_UInt uiCacheSizeLimit)
virtual eC_UInt GetImageSize(const ImageResource_t &eImageID) const =0
static void DeleteInstance()
Deletes the only instance of this class.
static void CreateInstance(eC_UInt uiSize=100 *1024 *1024, ReplacementPolicyType_t eUsed=IC_REPLACEMENT_POLICY_LRU, ReplacementPolicyType_t eFree=IC_REPLACEMENT_POLICY_LRU)
virtual eC_Bool LoadImg(const eC_String &kPath, const ImageResource_t &eImageID)=0
virtual void MarkAsUsed(const ImageResource_t &eImageID)=0
static void NotifyImageAccess(const ImageResource_t &eImageID)
Definition: GUIImageCache.h:209
virtual eC_Bool FreeSpace(eC_UInt uiSpaceToFree)=0
friend class CGUIBackgroundImageLoaderThread
Definition: GUIImageCache.h:111
CGUIImageCacheReplacementPolicy * m_pFreeReplacementPolicy
Pointer to the current free list replacement policy.
Definition: GUIImageCache.h:291
static CGUIImageCache * ms_pInstance
Pointer to singleton instance.
Definition: GUIImageCache.h:282
virtual ~CGUIImageCache()
Destructor.
static CGUIImageCache * GetInstance()
Definition: GUIImageCache.h:127
virtual void MarkAsFree(const ImageResource_t &eImageID)=0
virtual void NotifyImageAccessInternal(const ImageResource_t &eImageID)=0
virtual eC_Bool PreloadImg(const eC_String &psPath, const ImageResource_t &eImageID)=0
virtual void SetFreeReplacementPolicy(CGUIImageCacheReplacementPolicy *pPolicy)
CGUIImageCacheReplacementPolicy * m_pUsedReplacementPolicy
Pointer to the current used list replacement policy.
Definition: GUIImageCache.h:294
CGUIImageCacheReplacementManager * m_pUsedListManager
Pointer to the current used list manager.
Definition: GUIImageCache.h:300
virtual eC_Bool UnloadSpecificImage(const ImageResource_t &eImageID)=0
CGUIImageCacheReplacementManager * m_pFreeListManager
Pointer to the current free list manager.
Definition: GUIImageCache.h:297
Replacement manager for the image cache.
Definition: GUIImageCacheReplacementManager.h:23
Abstract replacement policy for use with the Guiliani image cache.
Definition: GUIImageCacheReplacementPolicy.h:34
Manages resource ID mappings for fonts, images, sounds, etc.
Definition: GUIResourceManager.h:111
The graphics wrapper base class.
Definition: GfxWrap.h:88
ReplacementPolicyType_t
Definition: GUIImageCacheReplacementPolicy.h:22
@ IC_REPLACEMENT_POLICY_LRU
Last recently used.
Definition: GUIImageCacheReplacementPolicy.h:26