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"
20 #include "insets/Inset.h"
21 #include "support/shared_ptr.h"
29 LyXRC_PreviewStatus Previews::status()
36 typedef shared_ptr<PreviewLoader> PreviewLoaderPtr;
38 typedef map<Buffer const *, PreviewLoaderPtr> LyxCacheType;
40 static LyxCacheType preview_cache_;
44 PreviewLoader & Previews::loader(Buffer const & buffer) const
46 LyxCacheType::iterator it = preview_cache_.find(&buffer);
48 if (it == preview_cache_.end()) {
49 PreviewLoaderPtr ptr(new PreviewLoader(buffer));
50 preview_cache_[&buffer] = ptr;
54 return *it->second.get();
58 void Previews::removeLoader(Buffer const & buffer) const
60 LyxCacheType::iterator it = preview_cache_.find(&buffer);
62 if (it != preview_cache_.end())
63 preview_cache_.erase(it);
67 void Previews::generateBufferPreviews(Buffer const & buffer) const
69 PreviewLoader & ploader = loader(buffer);
71 Inset & inset = buffer.inset();
72 InsetIterator it = inset_iterator_begin(inset);
73 InsetIterator const end = inset_iterator_end(inset);
75 for (; it != end; ++it)
76 it->addPreview(it, ploader);
78 ploader.startLoading();
81 } // namespace graphics