+ BOOST_ASSERT(bv && bv->buffer());
+
+ Buffer const & buffer = *bv->buffer();
+ graphics::PreviewLoader const & loader = getPreviewLoader(buffer);
+ graphics::PreviewLoader::Status const status = loader.status(snippet);
+
+ string message;
+ switch (status) {
+ case graphics::PreviewLoader::InQueue:
+ case graphics::PreviewLoader::Processing:
+ message = _("Preview loading");
+ break;
+ case graphics::PreviewLoader::Ready:
+ message = _("Preview ready");
+ break;
+ case graphics::PreviewLoader::NotFound:
+ message = _("Preview failed");
+ break;
+ }
+
+ return message;
+}
+
+} // namespace anon
+
+
+graphics::PreviewImage const *
+RenderPreview::getPreviewImage(Buffer const & buffer) const
+{
+ graphics::PreviewLoader const & loader = getPreviewLoader(buffer);
+ return loader.preview(snippet_);
+}
+
+
+void RenderPreview::metrics(MetricsInfo & mi, Dimension & dim) const
+{
+ BOOST_ASSERT(mi.base.bv && mi.base.bv->buffer());
+
+ graphics::PreviewImage const * const pimage =
+ getPreviewImage(*mi.base.bv->buffer());
+
+ if (pimage) {
+ dim.asc = pimage->ascent();
+ dim.des = pimage->descent();
+ dim.wid = pimage->width();