OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimFixedTileCache.h
Go to the documentation of this file.
1 //******************************************************************
2 // Copyright (C) 2000 ImageLinks Inc.
3 //
4 // License: MIT
5 //
6 // See LICENSE.txt file in the top level directory for more details.
7 //
8 // Author: Garrett Potts
9 //
10 // Description: This file contains the Application cache algorithm
11 //
12 //***********************************
13 // $Id: ossimFixedTileCache.h 16276 2010-01-06 01:54:47Z gpotts $
14 #ifndef ossimFixedTileCache_HEADER
15 #define ossimFixedTileCache_HEADER
16 #include <map>
17 #include <list>
18 #include <ossim/base/ossimIpt.h>
20 #include <ossim/base/ossimRefPtr.h>
22 #include <mutex>
23 
25 {
26 public:
28  ossim_int32 tileId=-1)
29  :theTile(tile),
30  theTileId(tileId)
31  {
32  }
33 
34  bool operator <(const ossimFixedTileCacheInfo& rhs)const
35  {
36  return (theTileId < rhs.theTileId);
37  }
38  bool operator <(ossim_int32 tileId)const
39  {
40  return (theTileId < tileId);
41  }
42  bool operator >(const ossimFixedTileCacheInfo& rhs)const
43  {
44  return (theTileId > rhs.theTileId);
45  }
46  bool operator >(ossim_int32 tileId)const
47  {
48  return (theTileId > tileId);
49  }
50  bool operator ==(const ossimFixedTileCacheInfo& rhs)const
51  {
52  return (theTileId == rhs.theTileId);
53  }
54  bool operator ==(ossim_int32 tileId)const
55  {
56  return (theTileId == tileId);
57  }
58 
61 };
62 
64 {
65 public:
67  virtual void setRect(const ossimIrect& rect);
68  virtual void setRect(const ossimIrect& rect,
69  const ossimIpt& tileSize);
70  void keepTilesWithinRect(const ossimIrect& rect);
72  bool duplicateData=true);
75  {
76  return getTile(computeId(origin));
77  }
78  virtual void setUseLruFlag(bool flag)
79  {
80  theUseLruFlag = flag;
81  }
82  virtual bool getUseLruFlag()const
83  {
84  return theUseLruFlag;
85  }
86  virtual void flush();
87  virtual void deleteTile(const ossimIpt& origin)
88  {
89  deleteTile(computeId(origin));
90  }
91  virtual void deleteTile(ossim_int32 tileId);
93  {
94  return removeTile(computeId(origin));
95  }
97  virtual const ossimIrect& getTileBoundaryRect()const
98  {
99  return theTileBoundaryRect;
100  }
102  {
103  return (ossim_uint32)theTileMap.size();
104  }
105  virtual const ossimIpt& getTileSize()const
106  {
107  return theTileSize;
108  }
109  virtual ossim_uint32 getCacheSize()const
110  {
111  return theCacheSize;
112  }
113  virtual void deleteTile();
115 
116  virtual void setMaxCacheSize(ossim_uint32 cacheSize)
117  {
118  theMaxCacheSize = cacheSize;
119  }
120 
122  {
123  return theMaxCacheSize;
124  }
125 
126  virtual ossimIpt getTileOrigin(ossim_int32 tileId);
127  virtual ossim_int32 computeId(const ossimIpt& tileOrigin)const;
128  virtual void setTileSize(const ossimIpt& tileSize);
129 protected:
130  virtual ~ossimFixedTileCache();
131  std::mutex theMutex;
139  std::map<ossim_int32, ossimFixedTileCacheInfo> theTileMap;
140  std::list<ossim_int32> theLruQueue;
142  virtual void eraseFromLru(ossim_int32 id);
143  void adjustLru(ossim_int32 id);
144 };
145 
146 #endif
virtual ossimRefPtr< ossimImageData > getTile(ossim_int32 id)
virtual const ossimIpt & getTileSize() const
virtual const ossimIrect & getTileBoundaryRect() const
virtual void deleteTile(const ossimIpt &origin)
virtual void setTileSize(const ossimIpt &tileSize)
ossimRefPtr< ossimImageData > theTile
bool operator==(const ossimFixedTileCacheInfo &rhs) const
ossimReferenced allows for shared object ref counting if the reference count ever gets to 0 or less i...
virtual void eraseFromLru(ossim_int32 id)
std::map< ossim_int32, ossimFixedTileCacheInfo > theTileMap
ossim_uint32 getMaxCacheSize() const
bool operator>(const ossimFixedTileCacheInfo &rhs) const
virtual ossimRefPtr< ossimImageData > removeTile()
void keepTilesWithinRect(const ossimIrect &rect)
virtual void setUseLruFlag(bool flag)
virtual ossimIpt getTileOrigin(ossim_int32 tileId)
virtual ossim_uint32 getCacheSize() const
virtual void setMaxCacheSize(ossim_uint32 cacheSize)
virtual void setRect(const ossimIrect &rect)
unsigned int ossim_uint32
ossimFixedTileCacheInfo(ossimRefPtr< ossimImageData > &tile, ossim_int32 tileId=-1)
ossim_uint32 theTilesHorizontal
virtual ossimRefPtr< ossimImageData > getTile(const ossimIpt &origin)
virtual ossim_int32 computeId(const ossimIpt &tileOrigin) const
bool operator<(const ossimFixedTileCacheInfo &rhs) const
virtual ossimRefPtr< ossimImageData > removeTile(const ossimIpt &origin)
virtual bool getUseLruFlag() const
std::list< ossim_int32 > theLruQueue
virtual ossimRefPtr< ossimImageData > addTile(ossimRefPtr< ossimImageData > imageData, bool duplicateData=true)
virtual ossim_uint32 getNumberOfTiles() const
int ossim_int32
void adjustLru(ossim_int32 id)