3 * Read the file COPYING
5 * \author Angus Leeming
7 * Full author contact details available in file CREDITS
13 #pragma implementation
17 #include "PreviewLoader.h"
22 #include "insets/inset.h"
24 #include "support/LAssert.h"
30 bool Previews::activated()
36 Previews & Previews::get()
38 static Previews singleton;
43 struct Previews::Impl {
45 typedef boost::shared_ptr<PreviewLoader> PreviewLoaderPtr;
47 typedef std::map<Buffer const *, PreviewLoaderPtr> CacheType;
62 PreviewLoader & Previews::loader(Buffer const * buffer) const
66 Impl::CacheType::iterator it = pimpl_->cache.find(buffer);
68 if (it == pimpl_->cache.end()) {
69 Impl::PreviewLoaderPtr ptr(new PreviewLoader(*buffer));
70 pimpl_->cache[buffer] = ptr;
74 return *it->second.get();
78 void Previews::removeLoader(Buffer const * buffer) const
83 Impl::CacheType::iterator it = pimpl_->cache.find(buffer);
85 if (it != pimpl_->cache.end())
86 pimpl_->cache.erase(it);
90 void Previews::generateBufferPreviews(Buffer const & buffer) const
92 PreviewLoader & ploader = loader(&buffer);
94 Buffer::inset_iterator it = buffer.inset_const_iterator_begin();
95 Buffer::inset_iterator end = buffer.inset_const_iterator_end();
97 for (; it != end; ++it)
98 it->addPreview(ploader);
100 ploader.startLoading();