]> git.lyx.org Git - lyx.git/blob - src/graphics/Previews.cpp
try using std::tr1::shared_ptr instead of boost::shared_ptr
[lyx.git] / src / graphics / Previews.cpp
1 /**
2  * \file Previews.cpp
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Angus Leeming
7  *
8  * Full author contact details are available in file CREDITS.
9  */
10
11 #include <config.h>
12
13 #include "Previews.h"
14 #include "PreviewLoader.h"
15
16 #include "Buffer.h"
17 #include "InsetIterator.h"
18 #include "LyXRC.h"
19
20 #include "insets/Inset.h"
21
22 #include <tr1/memory>
23
24 using namespace std;
25 using namespace std::tr1;
26
27 namespace lyx {
28
29 namespace graphics {
30
31 LyXRC_PreviewStatus Previews::status()
32 {
33         return lyxrc.preview;
34 }
35
36
37 namespace {
38 typedef shared_ptr<PreviewLoader> PreviewLoaderPtr;
39 ///
40 typedef map<Buffer const *, PreviewLoaderPtr> LyxCacheType;
41 ///
42 static LyxCacheType preview_cache_;
43 }
44
45
46 PreviewLoader & Previews::loader(Buffer const & buffer) const
47 {
48         LyxCacheType::iterator it = preview_cache_.find(&buffer);
49
50         if (it == preview_cache_.end()) {
51                 PreviewLoaderPtr ptr(new PreviewLoader(buffer));
52                 preview_cache_[&buffer] = ptr;
53                 return *ptr.get();
54         }
55
56         return *it->second.get();
57 }
58
59
60 void Previews::removeLoader(Buffer const & buffer) const
61 {
62         LyxCacheType::iterator it = preview_cache_.find(&buffer);
63
64         if (it != preview_cache_.end())
65                 preview_cache_.erase(it);
66 }
67
68
69 void Previews::generateBufferPreviews(Buffer const & buffer) const
70 {
71         PreviewLoader & ploader = loader(buffer);
72
73         Inset & inset = buffer.inset();
74         InsetIterator it = inset_iterator_begin(inset);
75         InsetIterator const end = inset_iterator_end(inset);
76
77         for (; it != end; ++it)
78                 it->addPreview(ploader);
79
80         ploader.startLoading();
81 }
82
83 } // namespace graphics
84 } // namespace lyx