LibreOffice Module canvas (master)  1
ogl_texturecache.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  */
9 
10 #ifndef INCLUDED_CANVAS_SOURCE_OPENGL_OGL_TEXTURECACHE_HXX
11 #define INCLUDED_CANVAS_SOURCE_OPENGL_OGL_TEXTURECACHE_HXX
12 
13 #include <sal/types.h>
14 #include <unordered_map>
15 
16 namespace com { namespace sun { namespace star {
17  namespace geometry { struct IntegerSize2D; }
18 }}}
19 
20 namespace oglcanvas
21 {
23  {
24  public:
25  TextureCache();
26  ~TextureCache();
27 
29  void flush();
30 
38  void prune();
39 
41  size_t getCacheSize() const { return maCache.size(); };
42  sal_uInt32 getCacheMissCount() const { return mnMissCount; }
43  sal_uInt32 getCacheHitCount() const { return mnHitCount; }
44 
45  unsigned int getTexture( const css::geometry::IntegerSize2D& rPixelSize,
46  const sal_Int8* pPixel,
47  sal_uInt32 nPixelCrc32) const;
48  private:
49  struct CacheEntry
50  {
51  CacheEntry() : nTexture(0), bOld(false) {}
52  unsigned int nTexture;
53  bool bOld;
54  };
55  typedef std::unordered_map<sal_uInt32,CacheEntry> TextureCacheMapT;
56  mutable TextureCacheMapT maCache;
57  mutable sal_uInt32 mnMissCount;
58  mutable sal_uInt32 mnHitCount;
59  };
60 }
61 
62 #endif
63 
64 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
sal_uInt32 getCacheHitCount() const
signed char sal_Int8
unsigned int getTexture(const css::geometry::IntegerSize2D &rPixelSize, const sal_Int8 *pPixel, sal_uInt32 nPixelCrc32) const
std::unordered_map< sal_uInt32, CacheEntry > TextureCacheMapT
void flush()
clear whole cache, reset statistic counters
sal_uInt32 getCacheMissCount() const
void prune()
prune old entries from cache
size_t getCacheSize() const
Statistics.