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"
28 LyXRC_PreviewStatus
Previews::status()
35 typedef boost::shared_ptr
<PreviewLoader
> PreviewLoaderPtr
;
37 typedef map
<Buffer
const *, PreviewLoaderPtr
> LyxCacheType
;
39 static LyxCacheType preview_cache_
;
43 PreviewLoader
& Previews::loader(Buffer
const & buffer
) const
45 LyxCacheType::iterator it
= preview_cache_
.find(&buffer
);
47 if (it
== preview_cache_
.end()) {
48 PreviewLoaderPtr
ptr(new PreviewLoader(buffer
));
49 preview_cache_
[&buffer
] = ptr
;
53 return *it
->second
.get();
57 void Previews::removeLoader(Buffer
const & buffer
) const
59 LyxCacheType::iterator it
= preview_cache_
.find(&buffer
);
61 if (it
!= preview_cache_
.end())
62 preview_cache_
.erase(it
);
66 void Previews::generateBufferPreviews(Buffer
const & buffer
) const
68 PreviewLoader
& ploader
= loader(buffer
);
70 Inset
& inset
= buffer
.inset();
71 InsetIterator it
= inset_iterator_begin(inset
);
72 InsetIterator
const end
= inset_iterator_end(inset
);
74 for (; it
!= end
; ++it
)
75 it
->addPreview(ploader
);
77 ploader
.startLoading();
80 } // namespace graphics