Not so soon, I guess, since that FIXME was from r6305.
[lyx.git] / src / graphics / Previews.cpp
blobb31292fc30132767244d2c6d3f82160a2c1b1832
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.
6 * \author Angus Leeming
8 * Full author contact details are available in file CREDITS.
9 */
11 #include <config.h>
13 #include "Previews.h"
14 #include "PreviewLoader.h"
16 #include "Buffer.h"
17 #include "InsetIterator.h"
18 #include "LyXRC.h"
20 #include "insets/Inset.h"
22 using namespace std;
24 namespace lyx {
26 namespace graphics {
28 LyXRC_PreviewStatus Previews::status()
30 return lyxrc.preview;
34 namespace {
35 typedef boost::shared_ptr<PreviewLoader> PreviewLoaderPtr;
36 ///
37 typedef map<Buffer const *, PreviewLoaderPtr> LyxCacheType;
38 ///
39 static LyxCacheType preview_cache_;
43 PreviewLoader & Previews::loader(Buffer const & buffer) const
45 LyxCacheType::iterator it = preview_cache_.find(&buffer);
47 if (it == preview_cache_.end()) {
48 PreviewLoaderPtr ptr(new PreviewLoader(buffer));
49 preview_cache_[&buffer] = ptr;
50 return *ptr.get();
53 return *it->second.get();
57 void Previews::removeLoader(Buffer const & buffer) const
59 LyxCacheType::iterator it = preview_cache_.find(&buffer);
61 if (it != preview_cache_.end())
62 preview_cache_.erase(it);
66 void Previews::generateBufferPreviews(Buffer const & buffer) const
68 PreviewLoader & ploader = loader(buffer);
70 Inset & inset = buffer.inset();
71 InsetIterator it = inset_iterator_begin(inset);
72 InsetIterator const end = inset_iterator_end(inset);
74 for (; it != end; ++it)
75 it->addPreview(ploader);
77 ploader.startLoading();
80 } // namespace graphics
81 } // namespace lyx