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"
19 #include "insets/inset.h"
21 #include "support/LAssert.h"
27 using namespace lyx::support;
31 bool Previews::activated()
37 Previews & Previews::get()
39 static Previews singleton;
44 struct Previews::Impl {
46 typedef boost::shared_ptr<PreviewLoader> PreviewLoaderPtr;
48 typedef std::map<Buffer const *, PreviewLoaderPtr> CacheType;
63 PreviewLoader & Previews::loader(Buffer const * buffer) const
67 Impl::CacheType::iterator it = pimpl_->cache.find(buffer);
69 if (it == pimpl_->cache.end()) {
70 Impl::PreviewLoaderPtr ptr(new PreviewLoader(*buffer));
71 pimpl_->cache[buffer] = ptr;
75 return *it->second.get();
79 void Previews::removeLoader(Buffer const * buffer) const
84 Impl::CacheType::iterator it = pimpl_->cache.find(buffer);
86 if (it != pimpl_->cache.end())
87 pimpl_->cache.erase(it);
91 void Previews::generateBufferPreviews(Buffer const & buffer) const
93 PreviewLoader & ploader = loader(&buffer);
95 Buffer::inset_iterator it = buffer.inset_const_iterator_begin();
96 Buffer::inset_iterator end = buffer.inset_const_iterator_end();
98 for (; it != end; ++it)
99 it->addPreview(ploader);
101 ploader.startLoading();
104 } // namespace graphics