DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
ImageCache.h
1
16
17
#pragma once
18
30
31
#if defined(ImageCache_RECURSES)
32
#error Recursive header files inclusion detected in ImageCache.h
33
#else
// defined(ImageCache_RECURSES)
35
#define ImageCache_RECURSES
36
37
#if !defined ImageCache_h
39
#define ImageCache_h
40
42
// Inclusions
43
#include <iostream>
44
#include "DGtal/base/Common.h"
45
#include "DGtal/base/ConceptUtils.h"
46
#include "DGtal/images/CImage.h"
47
#include "DGtal/images/CImageFactory.h"
48
#include "DGtal/images/CImageCacheReadPolicy.h"
49
#include "DGtal/images/CImageCacheWritePolicy.h"
50
#include "DGtal/base/Alias.h"
52
53
namespace
DGtal
54
{
55
56
// CACHE_READ_POLICY_LAST, CACHE_READ_POLICY_FIFO, CACHE_READ_POLICY_LRU, CACHE_READ_POLICY_NEIGHBORS // read policies
57
// CACHE_WRITE_POLICY_WT, CACHE_WRITE_POLICY_WB // write policies
58
60
// Template class ImageCache
76
template
<
typename
TImageContainer,
typename
TImageFactory,
typename
TReadPolicy,
typename
TWritePolicy>
77
class
ImageCache
78
{
79
80
// ----------------------- Types ------------------------------
81
82
public
:
83
typedef
ImageCache<TImageContainer, TImageFactory, TReadPolicy, TWritePolicy>
Self
;
84
86
BOOST_CONCEPT_ASSERT
((
concepts::CImage<TImageContainer>
));
87
BOOST_CONCEPT_ASSERT
((
concepts::CImageFactory<TImageFactory>
));
88
BOOST_CONCEPT_ASSERT
((
concepts::CImageCacheReadPolicy<TReadPolicy>
));
89
BOOST_CONCEPT_ASSERT
((
concepts::CImageCacheWritePolicy<TWritePolicy>
));
90
92
typedef
TImageContainer
ImageContainer
;
93
typedef
typename
ImageContainer::Domain
Domain
;
94
typedef
typename
ImageContainer::Point
Point
;
95
typedef
typename
ImageContainer::Value
Value
;
96
97
typedef
TImageFactory
ImageFactory
;
98
99
typedef
TReadPolicy
ReadPolicy
;
100
typedef
TWritePolicy
WritePolicy
;
101
102
// ----------------------- Standard services ------------------------------
103
104
public
:
105
112
ImageCache
(
Alias<ImageFactory>
anImageFactory,
Alias<ReadPolicy>
aReadPolicy,
Alias<WritePolicy>
aWritePolicy):
113
myImageFactoryPtr
(&anImageFactory),
myReadPolicy
(&aReadPolicy),
myWritePolicy
(&aWritePolicy)
114
{
115
myReadPolicy
->clearCache();
116
117
cacheMissRead
= 0;
118
cacheMissWrite
= 0;
119
}
120
125
~ImageCache
()
126
{
127
}
128
129
private
:
130
131
ImageCache
(
const
ImageCache
& other );
132
133
ImageCache
&
operator=
(
const
ImageCache
& other );
134
135
// ----------------------- Interface --------------------------------------
136
public
:
137
139
140
142
143
145
150
void
selfDisplay
( std::ostream & out )
const
;
151
156
bool
isValid
()
const
157
{
158
return
(
myImageFactoryPtr
->isValid());
159
}
160
170
bool
read
(
const
Point
&
aPoint
,
Value
&aValue)
const
;
171
180
ImageContainer
*
getPage
(
const
Domain
& aDomain)
const
;
181
191
bool
write
(
const
Point
&
aPoint
,
const
Value
&aValue);
192
198
void
update
(
const
Domain
&aDomain);
199
203
unsigned
int
getCacheMissRead
()
204
{
205
return
cacheMissRead
;
206
}
207
211
unsigned
int
getCacheMissWrite
()
212
{
213
return
cacheMissWrite
;
214
}
215
219
void
incCacheMissRead
()
220
{
221
cacheMissRead
++;
222
}
223
227
void
incCacheMissWrite
()
228
{
229
cacheMissWrite
++;
230
}
231
235
void
clearCacheAndResetCacheMisses
()
236
{
237
myReadPolicy
->clearCache();
238
239
cacheMissRead
= 0;
240
cacheMissWrite
= 0;
241
}
242
243
// ------------------------- Protected Data ------------------------------
244
private
:
248
//ImageCache() {}
249
250
// ------------------------- Private Data --------------------------------
251
protected
:
252
254
ImageFactory
*
myImageFactoryPtr
;
255
257
ReadPolicy
*
myReadPolicy
;
258
WritePolicy
*
myWritePolicy
;
259
260
private
:
261
263
unsigned
int
cacheMissRead
;
264
unsigned
int
cacheMissWrite
;
265
266
// ------------------------- Internals ------------------------------------
267
private
:
268
269
};
// end of class ImageCache
270
271
278
template
<
typename
TImageContainer,
typename
TImageFactory,
typename
TReadPolicy,
typename
TWritePolicy>
279
std::ostream&
280
operator<<
( std::ostream & out,
const
ImageCache<TImageContainer, TImageFactory, TReadPolicy, TWritePolicy>
&
object
);
281
282
}
// namespace DGtal
283
284
286
// Includes inline functions.
287
#include "DGtal/images/ImageCachePolicies.h"
288
#include "DGtal/images/ImageCache.ih"
289
290
// //
292
293
#endif
// !defined ImageCache_h
294
295
#undef ImageCache_RECURSES
296
#endif
// else defined(ImageCache_RECURSES)
DGtal::Alias
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Definition
Alias.h:183
DGtal::ImageCache
Aim: implements an images cache with 'read and write' policies.
Definition
ImageCache.h:78
DGtal::ImageCache::clearCacheAndResetCacheMisses
void clearCacheAndResetCacheMisses()
Definition
ImageCache.h:235
DGtal::ImageCache::read
bool read(const Point &aPoint, Value &aValue) const
DGtal::ImageCache::WritePolicy
TWritePolicy WritePolicy
Definition
ImageCache.h:100
DGtal::ImageCache< OutputImage, ImageFactory, ImageCacheReadPolicy, ImageCacheWritePolicy >::cacheMissWrite
unsigned int cacheMissWrite
Definition
ImageCache.h:264
DGtal::ImageCache::ImageCache
ImageCache(const ImageCache &other)
DGtal::ImageCache::ImageCache
ImageCache(Alias< ImageFactory > anImageFactory, Alias< ReadPolicy > aReadPolicy, Alias< WritePolicy > aWritePolicy)
Definition
ImageCache.h:112
DGtal::ImageCache::Self
ImageCache< TImageContainer, TImageFactory, TReadPolicy, TWritePolicy > Self
Definition
ImageCache.h:83
DGtal::ImageCache::isValid
bool isValid() const
Definition
ImageCache.h:156
DGtal::ImageCache::getCacheMissRead
unsigned int getCacheMissRead()
Definition
ImageCache.h:203
DGtal::ImageCache::Point
ImageContainer::Point Point
Definition
ImageCache.h:94
DGtal::ImageCache::operator=
ImageCache & operator=(const ImageCache &other)
DGtal::ImageCache::update
void update(const Domain &aDomain)
DGtal::ImageCache::write
bool write(const Point &aPoint, const Value &aValue)
DGtal::ImageCache::incCacheMissWrite
void incCacheMissWrite()
Definition
ImageCache.h:227
DGtal::ImageCache< OutputImage, ImageFactory, ImageCacheReadPolicy, ImageCacheWritePolicy >::myWritePolicy
WritePolicy * myWritePolicy
Definition
ImageCache.h:258
DGtal::ImageCache< OutputImage, ImageFactory, ImageCacheReadPolicy, ImageCacheWritePolicy >::myImageFactoryPtr
ImageFactory * myImageFactoryPtr
Definition
ImageCache.h:254
DGtal::ImageCache::getPage
ImageContainer * getPage(const Domain &aDomain) const
DGtal::ImageCache::incCacheMissRead
void incCacheMissRead()
Definition
ImageCache.h:219
DGtal::ImageCache< OutputImage, ImageFactory, ImageCacheReadPolicy, ImageCacheWritePolicy >::myReadPolicy
ReadPolicy * myReadPolicy
Definition
ImageCache.h:257
DGtal::ImageCache::ImageFactory
TImageFactory ImageFactory
Definition
ImageCache.h:97
DGtal::ImageCache::~ImageCache
~ImageCache()
Definition
ImageCache.h:125
DGtal::ImageCache::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((concepts::CImageCacheReadPolicy< TReadPolicy >))
DGtal::ImageCache::Domain
ImageContainer::Domain Domain
Definition
ImageCache.h:93
DGtal::ImageCache< OutputImage, ImageFactory, ImageCacheReadPolicy, ImageCacheWritePolicy >::cacheMissRead
unsigned int cacheMissRead
Definition
ImageCache.h:263
DGtal::ImageCache::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((concepts::CImageCacheWritePolicy< TWritePolicy >))
DGtal::ImageCache::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((concepts::CImage< TImageContainer >))
Checking concepts.
DGtal::ImageCache::getCacheMissWrite
unsigned int getCacheMissWrite()
Definition
ImageCache.h:211
DGtal::ImageCache::Value
ImageContainer::Value Value
Definition
ImageCache.h:95
DGtal::ImageCache::BOOST_CONCEPT_ASSERT
BOOST_CONCEPT_ASSERT((concepts::CImageFactory< TImageFactory >))
DGtal::ImageCache::ReadPolicy
TReadPolicy ReadPolicy
Definition
ImageCache.h:99
DGtal::ImageCache::ImageContainer
TImageContainer ImageContainer
Types copied from the container.
Definition
ImageCache.h:92
DGtal::ImageCache::selfDisplay
void selfDisplay(std::ostream &out) const
DGtal::ImageContainerBySTLVector< HyperRectDomain< Z2i::Space >, std::unordered_set< Z2i::Point > >::Domain
HyperRectDomain< Z2i::Space > Domain
Definition
ImageContainerBySTLVector.h:137
DGtal::ImageContainerBySTLVector< HyperRectDomain< Z2i::Space >, std::unordered_set< Z2i::Point > >::Value
std::unordered_set< Z2i::Point > Value
Definition
ImageContainerBySTLVector.h:153
DGtal::ImageContainerBySTLVector< HyperRectDomain< Z2i::Space >, std::unordered_set< Z2i::Point > >::Point
Domain::Point Point
Definition
ImageContainerBySTLVector.h:138
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
DGtal::operator<<
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
DGtal::concepts::CImageCacheReadPolicy
Aim: Defines the concept describing a cache read policy.
Definition
CImageCacheReadPolicy.h:94
DGtal::concepts::CImageCacheWritePolicy
Aim: Defines the concept describing a cache write policy.
Definition
CImageCacheWritePolicy.h:92
DGtal::concepts::CImageFactory
Aim: Defines the concept describing an image factory.
Definition
CImageFactory.h:91
DGtal::concepts::CImage
Aim: Defines the concept describing a read/write image, having an output iterator.
Definition
CImage.h:103
aPoint
const Point aPoint(3, 4)
TImageContainer
ImageContainerBySTLVector< HyperRectDomain< Z2i::Space >, std::unordered_set< Z2i::Point > > TImageContainer
Definition
testVoronoiMapComplete.cpp:48
src
DGtal
images
ImageCache.h
Generated on
for DGtal by
1.18.0