3 * Copyright 2002 the LyX Team
4 * Read the file COPYING
6 * \author Angus Leeming <a.leeming@ic.ac.uk>
12 #pragma implementation
16 #include "PreviewLoader.h"
21 #include "insets/inset.h"
23 #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 *, PreviewLoaderPtr> CacheType;
62 PreviewLoader & Previews::loader(Buffer * buffer)
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 * buffer)
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 * buffer)
92 if (!buffer || !lyxrc.preview)
95 PreviewLoader & ploader = loader(buffer);
97 Buffer::inset_iterator it = buffer->inset_const_iterator_begin();
98 Buffer::inset_iterator end = buffer->inset_const_iterator_end();
100 for (; it != end; ++it) {
101 if ((*it)->lyxCode() == Inset::MATH_CODE) {
102 (*it)->generatePreview(ploader);
106 ploader.startLoading();