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.
14 #include "PreviewLoader.h"
17 #include "insetiterator.h"
19 #include "paragraph.h"
21 #include "insets/inset.h"
27 bool Previews::activated()
33 Previews & Previews::get()
35 static Previews singleton;
40 struct Previews::Impl {
42 typedef boost::shared_ptr<PreviewLoader> PreviewLoaderPtr;
44 typedef std::map<Buffer const *, PreviewLoaderPtr> CacheType;
59 PreviewLoader & Previews::loader(Buffer const & buffer) const
61 Impl::CacheType::iterator it = pimpl_->cache.find(&buffer);
63 if (it == pimpl_->cache.end()) {
64 Impl::PreviewLoaderPtr ptr(new PreviewLoader(buffer));
65 pimpl_->cache[&buffer] = ptr;
69 return *it->second.get();
73 void Previews::removeLoader(Buffer const & buffer) const
75 Impl::CacheType::iterator it = pimpl_->cache.find(&buffer);
77 if (it != pimpl_->cache.end())
78 pimpl_->cache.erase(it);
82 void Previews::generateBufferPreviews(Buffer const & buffer) const
84 PreviewLoader & ploader = loader(buffer);
86 for (InsetIterator it(buffer.inset()); it; ++it)
87 it->addPreview(ploader);
89 ploader.startLoading();
92 } // namespace graphics