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"
18 #include "paragraph.h"
20 #include "insets/inset.h"
26 bool Previews::activated()
32 Previews & Previews::get()
34 static Previews singleton;
39 struct Previews::Impl {
41 typedef boost::shared_ptr<PreviewLoader> PreviewLoaderPtr;
43 typedef std::map<Buffer const *, PreviewLoaderPtr> CacheType;
58 PreviewLoader & Previews::loader(Buffer const & buffer) const
60 Impl::CacheType::iterator it = pimpl_->cache.find(&buffer);
62 if (it == pimpl_->cache.end()) {
63 Impl::PreviewLoaderPtr ptr(new PreviewLoader(buffer));
64 pimpl_->cache[&buffer] = ptr;
68 return *it->second.get();
72 void Previews::removeLoader(Buffer const & buffer) const
74 Impl::CacheType::iterator it = pimpl_->cache.find(&buffer);
76 if (it != pimpl_->cache.end())
77 pimpl_->cache.erase(it);
81 void Previews::generateBufferPreviews(Buffer const & buffer) const
83 PreviewLoader & ploader = loader(buffer);
85 Buffer::inset_iterator it = buffer.inset_const_iterator_begin();
86 Buffer::inset_iterator end = buffer.inset_const_iterator_end();
88 for (; it != end; ++it)
89 it->addPreview(ploader);
91 ploader.startLoading();
94 } // namespace graphics